ios友盟QQ登录和微信登录

我这次做的是接入友盟第三方登录,因为想着可以不用到各个平台上去集成所有的sdk 直接一步到位。
首先是要到各个平台去注册开发者,假如公司直接有,就直接用,这个自不用详细说。
然后是友盟的账号,同上。并下载友盟的SDK。在下载SDK的时候可以选择你需要接入的平台和功能,这样下载下来的东西才会包含你要的内容模块。(我下的SDK是6.8.2版本)
接下来就是正题。
一、导入SDK
第三方登录这个模块需要用到common和share文件夹里面的内容,直接拖入项目即可,然后需要加入一些依赖库
"SystemConfiguration.framework"
"Security.framework"
"CoreTelephony.framework"
"CoreGraphics.Framework"
"libiconv.tbd"
"libsqlite3.tbd"
"libstdc++.tbd"
"libz.tbd"
根据接入的第三方不同 可能会有所增减
二、在plist文件里配置白名单

LSApplicationQueriesSchemes wechat weixinsinaweibohd sinaweibo sinaweibosso weibosdk weibosdk2.5mqqapi mqq mqqOpensdkSSoLogin mqqconnect mqqopensdkdataline mqqopensdkgrouptribeshare mqqopensdkfriend mqqopensdkapi mqqopensdkapiV2 mqqopensdkapiV3 mqzoneopensdk wtloginmqq wtloginmqq2 mqqwpa mqzone mqzonev2 mqzoneshare wtloginqzone mqzonewx mqzoneopensdkapiV2 mqzoneopensdkapi19 mqzoneopensdkapi mqzoneopensdkalipay alipayshare

并在TARGETS -> info -> URL Types里做相应配置

ios友盟QQ登录和微信登录
文章图片
1269906-c20b3c9b67a92432.png 这里需要注意的是 QQ登录需要配置两个URL Types
一个是 QQ+16进制(不足16位前面补0)的腾讯互联上的AppID 另外一个是 tencent+腾讯互联上的AppID
三、代码初始化
在AppDelegate中 导入
#import #import

并在didFinishLaunchingWithOptions方法用 初始化
[UMConfigure initWithAppkey:@"your Umeng appKey" channel:@"App Store"]; //连续添加不同的平台 此处以微信为例 [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:@"微信平台的appKey" appSecret:@"微信平台的SecretKey" redirectURL:@"http://www.baidu.com"]; [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:@"腾讯互联的APP ID" appSecret:nil redirectURL:@"http://www.baidu.com"];

这里稍微吐槽一下 QQ第三方登录申请的时候 就要你填写URL Schema 和 App Store ID ,这样才能获得APP ID 和 APP KEY 但是 URL Schema 是根据APP ID 转16进制来的(不足16位前面补0),鸡生蛋,蛋生鸡的问题,还有假如你还没有app store的预设,那也没有App Store ID,这个时候怎么搞呢,我当时也纠结,后来发现可以乱写,这两项先乱写,URL Schema 写QQ+八位数字 APP Store ID 写10位数字.申请通过后 可以用APP ID 回来改
四、调起SDK
在需要第三方登录的操作方法中加入代码
[[UMSocialManager defaultManager] getUserInfoWithPlatform:platformType currentViewController:self completion:^(id result, NSError *error) {if (error) { NSLog(@"%@",error); } else { UMSocialUserInfoResponse *resp = result; // 授权信息 NSLog(@"Wechat uid: %@", resp.uid); NSLog(@"Wechat openid: %@", resp.openid); NSLog(@"Wechat unionid: %@", resp.unionId); NSLog(@"Wechat accessToken: %@", resp.accessToken); NSLog(@"Wechat refreshToken: %@", resp.refreshToken); NSLog(@"Wechat expiration: %@", resp.expiration); // 用户信息 NSLog(@"Wechat name: %@", resp.name); NSLog(@"Wechat iconurl: %@", resp.iconurl); NSLog(@"Wechat gender: %@", resp.unionGender); // 第三方平台SDK源数据 NSLog(@"Wechat originalResponse: %@", resp.originalResponse); }}];

【ios友盟QQ登录和微信登录】五、监听回调
在AppDelegate中 添加监听回调方法 我直接在官方文档上拷贝的 哈哈哈
//#define __IPHONE_10_0100000 #if __IPHONE_OS_VERSION_MAX_ALLOWED > 100000 - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options { //6.3的新的API调用,是为了兼容国外平台(例如:新版facebookSDK,VK等)的调用[如果用6.2的api调用会没有回调],对国内平台没有影响。 BOOL result = [[UMSocialManager defaultManager]handleOpenURL:url options:options]; if (!result) { // 其他如支付等SDK的回调 } return result; } #endif- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { //6.3的新的API调用,是为了兼容国外平台(例如:新版facebookSDK,VK等)的调用[如果用6.2的api调用会没有回调],对国内平台没有影响 BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url sourceApplication:sourceApplication annotation:annotation]; if (!result) { // 其他如支付等SDK的回调 } return result; }- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url]; if (!result) { // 其他如支付等SDK的回调 } return result; }

加入一切操作顺利 在调起SDK的方法block中可以获取到相应的账户信息,然后再由客户端调起后台接口进行登录app操作

    推荐阅读