這個月初對社交分享提出了新的要求,不再使用第三方封裝的,要求使用使用微博、微信原生的SDK進行封裝,盡量把數(shù)據(jù)掌握在自己手里。于是開始查看相關(guān)平臺的文檔和demo自己封裝。現(xiàn)對封裝過程進行一個總結(jié),給自己提個醒。
對于授權(quán)和分享,微博和微信都是采用request
和response
的方式,發(fā)送請求,接收響應,而且都是采用代理的形勢。不方便二合一,建議添加block,把微博和微信的授權(quán)和分享都做成回調(diào)的形勢,這樣便于二合一。
微博封裝的總結(jié): appkey
和重定向URL
必不可少。按照文檔的步驟設(shè)置urlscheme。微博授權(quán)的時候返回這是基本的用戶信息,如果想要獲得具體的用戶信息,還需要調(diào)用
+ (WBHttpRequest *)requestForUserProfile:(NSString *)aUserID
withAccessToken:(NSString *)accessToken
andOtherProperties:(NSDictionary *)otherProperties
queue:(NSOperationQueue *)queue
withCompletionHandler:(WBRequestHandler)handler
才能返回具體的用戶信息。而分享時則有兩種形式,一種是直接分享到微博賬號,一種是喚起微博的客戶端發(fā)送微博的頁面進行微博的發(fā)布。微博SDK提供的發(fā)表一個微博的方法是直接發(fā)送到賬號的。如下:
+ (WBHttpRequest *)requestForShareAStatus:(NSString *)statusText
contatinsAPicture:(WBImageObject *)imageObject
orPictureUrl:(NSString *)url
withAccessToken:(NSString *)accessToken
andOtherProperties:(NSDictionary *)otherProperties
queue:(NSOperationQueue *)queue
withCompletionHandler:(WBRequestHandler)handler;
喚起微博的客戶端發(fā)送微博的方法,微博SDK沒有直接提供,需要自己打包微博消息,然后調(diào)用發(fā)送接口。如下:
WBSendMessageToWeiboRequest *weiboRequest = [WBSendMessageToWeiboRequest requestWithMessage:messageObject authInfo:nil access_token:self.accessToken];
[WeiboSDK sendRequest:weiboRequest];
分享到微博的文本內(nèi)容,如果包含鏈接,需要對文本內(nèi)容進行url編碼。這樣鏈接才能正常顯示。
溫馨提示:未登錄的微博,登錄以后就停留在微博客戶端,并沒有出現(xiàn)授權(quán)界面,與微信有所不同。以下兩種情況可在登錄以后出現(xiàn)授權(quán)頁面進行授權(quán):
1、iOS7 的系統(tǒng)的版本可以登錄成功以后接著進行授權(quán)。
2、微博客戶端退出賬號以后后自動彈出登錄頁面,如果把登錄頁面關(guān)閉,再從其他app要求進行微博授權(quán),這個時候登錄完成以后是可以接著授權(quán)的。(我在iOS9.2.1上實驗的結(jié)果,僅供參看)
所以微博的授權(quán)最好在微博賬號登錄以后進行授權(quán),才能保證授權(quán)成功。
微信封裝的總結(jié):微信授權(quán)時的scope 和 state都需要正確賦值,以免權(quán)限不夠或者授權(quán)不成功。微信授權(quán)獲取個人信息需要三步。
- 1、向微信發(fā)送授權(quán)請求
- 2、拿授權(quán)請求返回的
code
,再去請求openid
和accesstoken
。 - 3、再拿第二步請求返回的
openid
和accesstoken
去請求個人信息。
溫馨提示:第二步和第三步并無直接的接口,只是提供了url和參數(shù),需要自己包裝。
微信分享的時直接按文檔或者是照著demo來就行了。需要注意的的是各個參數(shù)的大小限制,微信對很多參數(shù)的大小有要求,例如:文本內(nèi)容和圖片的大小等。分享到微信好友時,縮略圖的大小一定不能超過32k,超過的話分享時無法打開微信。因此需要對分享到會話的縮略圖進行壓縮處理,以保證其不超過32k。
以上只是我在進行微博、微信原生SDK接入app時,遇到的一些問題的總結(jié)。如有問題歡迎探討,歡迎微博@藍光95_176.