这个月初对社交分享提出了新的要求,不再使用第三方封装的,要求使用使用微博、微信原生的SDK进行封装,尽量把数据掌握在自己手里。于是开始查看相关平台的文档和demo自己封装。现对封装过程进行一个总结,给自己提个醒。
对于授权和分享,微博和微信都是采用request
和response
的方式,发送请求,接收响应,而且都是采用代理的形势。不方便二合一,建议添加block,把微博和微信的授权和分享都做成回调的形势,这样便于二合一。
微博封装的总结: appkey
和重定向URL
必不可少。按照文档的步骤设置urlscheme。微博授权的时候返回这是基本的用户信息,如果想要获得具体的用户信息,还需要调用
+ (WBHttpRequest *)requestForUserProfile:(NSString *)aUserID
withAccessToken:(NSString *)accessToken
andOtherProperties:(NSDictionary *)otherProperties
queue:(NSOperationQueue *)queue
withCompletionHandler:(WBRequestHandler)handler
才能返回具体的用户信息。而分享时则有两种形式,一种是直接分享到微博账号,一种是唤起微博的客户端发送微博的页面进行微博的发布。微博SDK提供的发表一个微博的方法是直接发送到账号的。如下:
+ (WBHttpRequest *)requestForShareAStatus:(NSString *)statusText
contatinsAPicture:(WBImageObject *)imageObject
orPictureUrl:(NSString *)url
withAccessToken:(NSString *)accessToken
andOtherProperties:(NSDictionary *)otherProperties
queue:(NSOperationQueue *)queue
withCompletionHandler:(WBRequestHandler)handler;
唤起微博的客户端发送微博的方法,微博SDK没有直接提供,需要自己打包微博消息,然后调用发送接口。如下:
WBSendMessageToWeiboRequest *weiboRequest = [WBSendMessageToWeiboRequest requestWithMessage:messageObject authInfo:nil access_token:self.accessToken];
[WeiboSDK sendRequest:weiboRequest];
分享到微博的文本内容,如果包含链接,需要对文本内容进行url编码。这样链接才能正常显示。
温馨提示:未登录的微博,登录以后就停留在微博客户端,并没有出现授权界面,与微信有所不同。以下两种情况可在登录以后出现授权页面进行授权:
1、iOS7 的系统的版本可以登录成功以后接着进行授权。
2、微博客户端退出账号以后后自动弹出登录页面,如果把登录页面关闭,再从其他app要求进行微博授权,这个时候登录完成以后是可以接着授权的。(我在iOS9.2.1上实验的结果,仅供参看)
所以微博的授权最好在微博账号登录以后进行授权,才能保证授权成功。
微信封装的总结:微信授权时的scope 和 state都需要正确赋值,以免权限不够或者授权不成功。微信授权获取个人信息需要三步。
- 1、向微信发送授权请求
- 2、拿授权请求返回的
code
,再去请求openid
和accesstoken
。 - 3、再拿第二步请求返回的
openid
和accesstoken
去请求个人信息。
温馨提示:第二步和第三步并无直接的接口,只是提供了url和参数,需要自己包装。
微信分享的时直接按文档或者是照着demo来就行了。需要注意的的是各个参数的大小限制,微信对很多参数的大小有要求,例如:文本内容和图片的大小等。分享到微信好友时,缩略图的大小一定不能超过32k,超过的话分享时无法打开微信。因此需要对分享到会话的缩略图进行压缩处理,以保证其不超过32k。
以上只是我在进行微博、微信原生SDK接入app时,遇到的一些问题的总结。如有问题欢迎探讨,欢迎微博@蓝光95_176.