這個(gè)月初對(duì)社交分享提出了新的要求,不再使用第三方封裝的粘秆,要求使用使用微博、微信原生的SDK進(jìn)行封裝殷勘,盡量把數(shù)據(jù)掌握在自己手里陋气。于是開(kāi)始查看相關(guān)平臺(tái)的文檔和demo自己封裝。現(xiàn)對(duì)封裝過(guò)程進(jìn)行一個(gè)總結(jié)痒玩,給自己提個(gè)醒。
對(duì)于授權(quán)和分享奴曙,微博和微信都是采用request
和response
的方式草讶,發(fā)送請(qǐng)求,接收響應(yīng)坤溃,而且都是采用代理的形勢(shì)薪介。不方便二合一越驻,建議添加block,把微博和微信的授權(quán)和分享都做成回調(diào)的形勢(shì)记劈,這樣便于二合一并巍。
微博封裝的總結(jié): appkey
和重定向URL
必不可少。按照文檔的步驟設(shè)置urlscheme嘶窄。微博授權(quán)的時(shí)候返回這是基本的用戶信息距贷,如果想要獲得具體的用戶信息忠蝗,還需要調(diào)用
+ (WBHttpRequest *)requestForUserProfile:(NSString *)aUserID
withAccessToken:(NSString *)accessToken
andOtherProperties:(NSDictionary *)otherProperties
queue:(NSOperationQueue *)queue
withCompletionHandler:(WBRequestHandler)handler
才能返回具體的用戶信息漓拾。而分享時(shí)則有兩種形式骇两,一種是直接分享到微博賬號(hào),一種是喚起微博的客戶端發(fā)送微博的頁(yè)面進(jìn)行微博的發(fā)布配阵。微博SDK提供的發(fā)表一個(gè)微博的方法是直接發(fā)送到賬號(hào)的。如下:
+ (WBHttpRequest *)requestForShareAStatus:(NSString *)statusText
contatinsAPicture:(WBImageObject *)imageObject
orPictureUrl:(NSString *)url
withAccessToken:(NSString *)accessToken
andOtherProperties:(NSDictionary *)otherProperties
queue:(NSOperationQueue *)queue
withCompletionHandler:(WBRequestHandler)handler;
喚起微博的客戶端發(fā)送微博的方法救拉,微博SDK沒(méi)有直接提供亿絮,需要自己打包微博消息麸拄,然后調(diào)用發(fā)送接口。如下:
WBSendMessageToWeiboRequest *weiboRequest = [WBSendMessageToWeiboRequest requestWithMessage:messageObject authInfo:nil access_token:self.accessToken];
[WeiboSDK sendRequest:weiboRequest];
分享到微博的文本內(nèi)容斗锭,如果包含鏈接岖是,需要對(duì)文本內(nèi)容進(jìn)行url編碼实苞。這樣鏈接才能正常顯示。
溫馨提示:未登錄的微博聪轿,登錄以后就停留在微博客戶端猾浦,并沒(méi)有出現(xiàn)授權(quán)界面,與微信有所不同音瓷。以下兩種情況可在登錄以后出現(xiàn)授權(quán)頁(yè)面進(jìn)行授權(quán):
1绳慎、iOS7 的系統(tǒng)的版本可以登錄成功以后接著進(jìn)行授權(quán)漠烧。
2、微博客戶端退出賬號(hào)以后后自動(dòng)彈出登錄頁(yè)面珊楼,如果把登錄頁(yè)面關(guān)閉度液,再?gòu)钠渌鸻pp要求進(jìn)行微博授權(quán)邓了,這個(gè)時(shí)候登錄完成以后是可以接著授權(quán)的骗炉。(我在iOS9.2.1上實(shí)驗(yàn)的結(jié)果句葵,僅供參看)
所以微博的授權(quán)最好在微博賬號(hào)登錄以后進(jìn)行授權(quán)兢仰,才能保證授權(quán)成功。
微信封裝的總結(jié):微信授權(quán)時(shí)的scope 和 state都需要正確賦值轻专,以免權(quán)限不夠或者授權(quán)不成功察蹲。微信授權(quán)獲取個(gè)人信息需要三步。
- 1洽议、向微信發(fā)送授權(quán)請(qǐng)求
- 2、拿授權(quán)請(qǐng)求返回的
code
混稽,再去請(qǐng)求openid
和accesstoken
匈勋。 - 3膳叨、再拿第二步請(qǐng)求返回的
openid
和accesstoken
去請(qǐng)求個(gè)人信息。
溫馨提示:第二步和第三步并無(wú)直接的接口懒鉴,只是提供了url和參數(shù)临谱,需要自己包裝奴璃。
微信分享的時(shí)直接按文檔或者是照著demo來(lái)就行了。需要注意的的是各個(gè)參數(shù)的大小限制抄课,微信對(duì)很多參數(shù)的大小有要求,例如:文本內(nèi)容和圖片的大小等间聊。分享到微信好友時(shí)抵拘,縮略圖的大小一定不能超過(guò)32k,超過(guò)的話分享時(shí)無(wú)法打開(kāi)微信僵蛛。因此需要對(duì)分享到會(huì)話的縮略圖進(jìn)行壓縮處理,以保證其不超過(guò)32k充尉。
以上只是我在進(jìn)行微博、微信原生SDK接入app時(shí)姿鸿,遇到的一些問(wèn)題的總結(jié)倒源。如有問(wèn)題歡迎探討,歡迎微博@藍(lán)光95_176.