原生分享(三):微博分享

如果覺得我寫的還不錯,請關注我的新浪微博@楊浩宇-小橘爺,最新文章即時推送~
原生分享(一):微信分享之搭建分享環境
原生分享(二):微信分享之使用分享

微博分享

書接上文,前兩篇博客我們介紹了如何使用微信的原生分享。但我還是那句話,我寫了原生的分享,但大家在做項目的時候千萬不要直接上原生,一定要用第三方!??!不然受苦受難的可是自己~

讓你的應用在微博開放平臺上運營,只需要通過簡單的六個步驟:

圖1-1 六個步驟

成為開發者&創建應用

這一部分涉及較少的技術性問題,請大家上新手指南進行查看。

其中還是有幾個需要注意的點:

  • 設定授權回調:請在“我的應用 - 應用信息 - 高級信息”中填寫您的應用回調 ,這樣才能使 OAuth2.0 授權正常進行 。如果您的APPSECRET發生泄露,您也可以通過該頁面中的重置按鈕對其重置。注意: iOS 應用推薦使用默認授權回調頁!地址為:https://api.weibo.com/oauth2/default.html
  • 設定 Apple ID 和 Bundle ID:請在“我的應用 - 應用信息 - 基本信息”中填寫您的 Apple ID 和 Bundle ID,這樣您的應用才能正常使用微博 iOS SDK 授權和回調。(更改設置有延時,建議退出賬號重新登錄后再測試)。注: Apple ID 如果沒有的話,先隨意填寫,當獲取了合法的 Apple ID 之后請馬上到這個頁面修改為正式版本。Bundle ID 需要和工程設置保證一致。

設置工程回調 URL Types

如下圖所示:其中 Identifier 應為自己的 SSO 授權回調地址,URL Scheme 則為 WB[APP KEY]。

圖1-2 設置URL Types

添加 SDK 文件到工程

將從 GitHub 上下載的 libWeiboSDK 文件夾添加到工程,其中包含 WeiboSDK.h、WeiboUser.h、WBHttpRequest.h、WBHttpRequest+WeiboUser.h、WBHttpRequest+WeiboShare.h、WBHttpRequest+WeiboToken.h、WBSDKBasicButton.h、WBSDKRelationshipButton.h、WBSDKCommentButton.h、WeiboSDK+Statistics.h 這10個.h文件以及 libWeiboSDK.a 和 WeiboSDK.bundle,統共12個文件。


圖1-3 添加SDK文件到工程

在工程中引入靜態庫之后,需要在編譯時添加 –ObjC 編譯選項,避免靜態庫中類加載不全造成程序崩潰。

方法:程序 Target->Buid Settings->Linking 下 OtherLinker Flags 項添加 -ObjC。

添加 Framework 文件到工程

在工程中修改 Other Linker Flags 后,需要修改編譯步驟的鏈接庫設置,避免鏈接階段由于庫的設置錯誤導致程序崩潰。

方法:程序 Target->Buid Phases->Link BinaryWith Libraries 下添加以下 Framework 到工程中。需要添加的 Frameworks 為:QuartzCore.framework、ImageIO.framework、SystemConfiguration.framework、Security.framework、CoreTelephony.framework、CoreText.framework、UIKit.framework、Foundation.framework、CoreGraphics.framework 、libz.dylib、libsqlite3.dylib

圖1-4 添加FrameWork

定義常用的常量

定義應用 SSO 登錄或者 Oauth2.0 認證所需的幾個常量。

AppKey:第三方應用申請的 AppKey, 來身份鑒證、顯示來源等;

AppRedirectURL: 應用回調 ,在進行 Oauth2.0 登錄認證時所使用 。對于 Mobile 客戶端應用來說,是不存在 Server 的,故此處的應用回調地址只要與新浪微博開放平臺->我的應用 ->應用信息-> 高級應用 ->授權設置->應用回調中的 url 地址保持一致就可以了,如下所示:

#define kAppKey         @"2045436852"
#define kRedirectURI    @"http://www.sina.com"

注冊 AppKey (ClientID)

程序啟動時,在代碼中向微博終端注冊你的 AppKey,如果初次集成微博 SDK,建議打開調試選項以便輸出調試信息。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[WeiboSDK enableDebugMode:YES];
[WeiboSDK registerApp:kAppKey];
return YES;
}

重寫 AppDelegate 的 handleOpenURL 和 openURL 方法

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    return [WeiboSDK handleOpenURL:url delegate:self];
}

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    return [WeiboSDK handleOpenURL:url delegate:self ];
}

至此,微博 SDK 的導入和初始化工作就都完成了~
- (void)shareButtonPressed
{
// 獲取AppDelegate
AppDelegate myDelegate =(AppDelegate)[[UIApplication sharedApplication] delegate];
/**
第三方應用向微博客戶端請求認證的消息結構

    第三方應用向微博客戶端申請認證時,需要調用[WeiboSDK sendRequest:]函數, 向微博客戶端發送一個WBAuthorizeRequest的消息結構。

    微博客戶端處理完后會向第三方應用發送一個結構為 WBAuthorizeResponse 的處理結果。
 */
    WBAuthorizeRequest *authRequest = [WBAuthorizeRequest request];
    // 微博開放平臺第三方應用授權回調頁地址,默認為`http://`
    authRequest.redirectURI = kRedirectURI;
    // 微博開放平臺第三方應用 scope,多個 scope 用逗號分隔
    authRequest.scope = @"all";
    // 第三方應用發送消息至微博客戶端程序的消息結構體,其中 message 類型我會在下面放出
    WBSendMessageToWeiboRequest *request = [WBSendMessageToWeiboRequest requestWithMessage:[self messageToShare] authInfo:authRequest access_token:myDelegate.wbtoken];
    // 自定義信息字典,用于數據傳輸過程中存儲相關的上下文環境數據

    // 第三方應用給微博客戶端程序發送 request 時,可以在 userInfo 中存儲請求相關的信息。
    request.userInfo = @{@"ShareMessageFrom": @"SendMessageToWeiboViewController",
                     @"Other_Info_1": [NSNumber numberWithInt:123],
                     @"Other_Info_2": @[@"obj1", @"obj2"],
                     @"Other_Info_3": @{@"key1": @"obj1", @"key2": @"obj2"}};
    // 發送請求給微博客戶端程序,并切換到微博

    // 請求發送給微博客戶端程序之后,微博客戶端程序會進行相關的處理,處理完成之后一定會調用 [WeiboSDKDelegate didReceiveWeiboResponse:] 方法將處理結果返回給第三方應用
    [WeiboSDK sendRequest:request];
}

文字類型的消息格式

// 微博客戶端程序和第三方應用之間傳遞的消息結構

// 一個消息結構由三部分組成:文字、圖片和多媒體數據。三部分內容中至少有一項不為空,圖片和多媒體數據不能共存。
WBMessageObject *message = [WBMessageObject message];
message.text = NSLocalizedString(@"測試通過WeiboSDK發送文字到微博!", nil);

圖片類型的消息格式

WBMessageObject *message = [WBMessageObject message];
// 消息中包含的圖片數據對象
WBImageObject *image = [WBImageObject object];
// 圖片真實數據內容
image.imageData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image_1" ofType:@"jpg"]];
// 消息的圖片內容
message.imageObject = image;

網頁類型的消息格式

WBMessageObject *message = [WBMessageObject message];
// 消息中包含的網頁數據對象
WBWebpageObject *webpage = [WBWebpageObject object];
// 對象唯一ID,用于唯一標識一個多媒體內容
// 當第三方應用分享多媒體內容到微博時,應該將此參數設置為被分享的內容在自己的系統中的唯一標識
webpage.objectID = @"identifier1";
webpage.title = NSLocalizedString(@"分享網頁標題", nil);
webpage.description = [NSString stringWithFormat:NSLocalizedString(@"分享網頁內容簡介-%.0f", nil), [[NSDate date] timeIntervalSince1970]];
// 多媒體內容縮略圖
webpage.thumbnailData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image_2" ofType:@"jpg"]];
// 網頁的url地址
webpage.webpageUrl = @"http://sina.cn?a=1";
// 消息的多媒體內容
message.mediaObject = webpage;

這就是微博分享的環境搭建和基本使用的全部內容了,捎帶腳吐槽一句,微博的分享真難用啊,我就測試了幾次就說我賬號異常,我也是……

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,501評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,673評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,610評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,939評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,668評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,004評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,001評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,173評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,705評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,426評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,656評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,139評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,833評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,247評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,580評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,371評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,621評論 2 380

推薦閱讀更多精彩內容