新浪腾讯的三方登录我是分开做的,当时可能刚自学ShareSDK的时候有点蒙,感觉老是出错,就直接在腾讯开放平台申请下载SDK在做腾讯的登录,成功之后再回头看ShareSDK的时候仔细了一点,就发现了很多之前没有注意到的问题,最终也成功。所以就直接放出来的这两个的三方登录,使用的不同的途径。因为微信申请的开发者资质需要付费,所以直接就拜拜了。原谅我只是一个屌丝。
一、ShareSDK
1.环境配置
使用ShareSDK的官方说明,认真仔细不能遗漏不要模糊略过。ShareSDK简洁版iOS文档
其中最后的时候提到的URL scheme,有兴趣的话可以学习一下,简单说可以理解是移动端App之间的通信是通过它做到的。详解看这里。
2.具体实践
ShareSDK简洁版iOS文档 同上,仔细慢慢来就好。
到这里应该才算开始这篇文章的正文部分。
3.infoplist中
(1)iOS9之后,使用的是https,所以需要配置
App Transport Security Settings -> Allow Arbitrary Loads ->YES (老生常谈了,反正什么都用得上)。
(2)这里需要添加的URL types,就跟上面的 URL scheme有关系了,所以说还是要多少了解下上边放出来的连接,人家写的挺好的,浅显的了解的话挺好的,深度的话我也不知道,因为我也不太懂,大概知道怎么回事,慢慢再来吧。
这一步点到target中的info(其实哪个infoplist都差不多,不过在target里设置的话稍微简单一点,这里ShareSDK文档也提到,我是又啰嗦了一下)。
点过来之后最下边有一个URL Types
点开它是这样的
其中重要的是URL Schemes,填写的格式是 tencent (使用的三方平台) + 在此平台上申请到的appkey。这里只是腾讯的例子,其他都是各找各的东家。
(3)完成上一步之后,还需要在infoplist中补充一个数组key值为LSApplicationQueriesSchemes的内容。包括的内容有点多。
注意:请忽略那个baidumap,与本文没有关系。里边的内容网上也会搜索到,其实我是根据出错显示缺少了哪个之后添加上的。
4.具体程序
头文件该导入的都要导入进去,官方的文档应该都有说明,在此不做赘述。
ShareSDK 调用了
+ (void)registerApp:(NSString*)appKey
activePlatforms:(NSArray*)activePlatforms
onImport:(SSDKImportHandler)importHandler
onConfiguration:(SSDKConfigurationHandler)configurationHandler;
1.appKey 是我们在ShareSDK官网申请到的appkey,是shareSDK的key,不是三方平台申请到的key。
2.activePlatforms 是一个数组,里边要放的数据是你想要操作的三方平台。
3.onImport 是一个block方法,在这个方法里用switch来添加每个平台
4.onConfiguration 这个block方法,需要对在onImport 中添加过的平台进行注册 ,以微博为例,具体方法为
- (void)SSDKSetupSinaWeiboByAppKey:(NSString*)appKey
appSecret:(NSString*)appSecret
redirectUri:(NSString*)redirectUri
authType:(NSString*)authType;
(1)appKey为三方平台的appKey值
(2)appSecret 为三方平台的appSecret值
(4)authType 授权方式。值可以是:SSDKAuthTypeSSO、SSDKAuthTypeWeb、SSDKAuthTypeBoth,分别代表SSO、网页授权、SSO+网页授权。
(3)redirectUri :回调地址 ,这个需要重点讲 ,栽的最多的地方,一天一栽。
redirectUri的问题
如果你出现过( error:redirect_uri_mismatch )的问题 基本就是这里设置的问题了
先放个链接吧 错误解决方法
这个值对应的是微博开放平台-> 我的应用 -> 应用信息->基本信息->应用地址
由上面的链接地址可以看到,我们需要对应用信息中的高级信息-> 授权设置进行操作,这里的地址其实随便写个公司的主页也可以,不过最好和基本信息的应用地址一致。
微博开放者平台设置完这一步之后,要记得在Mob官网进行同步设置。
(1)首先进入Mob中自己所创建的应用后台信息,侧边框部分
点进入社会化平台设置,进来后大致是这样的
将是否开启回流短链关闭,然后选择要设置的平台,我选择的是微博。
依照要求填写你在微博开放平台申请的AppKey AppSecret 授权回调页。
这里的授权回调页填写的就是微博开放平台应用信息中的高级信息-> 授权设置中保持一致。
5.实现代码
这里可以设计写在一个点击事件的触发方法里,触发后调用三方登录
ShareSDK调用
+ (void)getUserInfo:(SSDKPlatformType)platformType
onStateChanged:(SSDKGetUserStateChangedHandler)stateChangedHandler;
platformType 为你选择的三方平台
onStateChanged block方法中对结果进行判断 ,是否成功
if(state ==SSDKResponseStateSuccess) {
NSLog(@"==成功");
}else{
NSLog(@"==失败");
}
到这里ShareSDK微博登录基本完了,主要的代码还要看官方的文档,这篇文章重点是在进行操作时出现的错误的解释。
腾讯自己的SDK实现三方登录,未完待续...