(0013)iOS 开发之集成友盟第三方登录
第三方登录的原理和流程
用户采用第三方登录的时候,用户会发送哪些信息到我的后台,后台会进行哪些比对操作?首次使用第三方登录和再次使用第三方登录时验证有哪些不同,后台如何保存用户的登录信息尼?
对于用户资源的授权来讲, OAuth并不是唯一的,但是目前OAuth2.0应该已经是各种平台的事实标准了,对于OAuth2.0协议,有一系列RFC阐述了OAuth2.0。不过OAuth2.0虽然已经是一个标准,但是各个平台对它的实现并不完全相同,但是最基本的流程是一样,所以你要先了解这个协议。
我直接拿QQ做例子,简单说一下流程:
当用户点击QQ登陆,引导用户跳转到第三方客户端,当用户成功登录以后会自动跳转回来,控制器会收到友盟的回调,拿到用的一些数据,uid/openid/accessToken/name/nickname/iconurl等。
第三方平台和本地用户系统结合应该分为三种情况:
- 本地未登录,第一次登录第三方:此时相当于注册,直接把第三方信息拉取来并注册成本地用户就可以了,并建立本地用户与第三方用户(openid)的绑定关系
- 本地未登录,再次登录第三方:此时用户已注册,获取到openid后直接找出对应的本地用户即可
- 本地登录,并绑定第三方:这个只要将获取到的openid绑定到本地用户就可以了
iOS 应用QQ互联授权登录和分享的审核填写?
这里的URL schema应该怎么设置?
在你的工程设置项,targets 一栏下,选中自己的 target,在 Info->URL Types 中添加 URL Schemes,设置Xcode的url scheme格式为“QQ”+腾讯QQ互联应用appId转换成十六进制(不足8位前面补0),例如“QQ05FC5B14”。并在QQ互联后台的URL schema中填入此字符串保持一致。
额外设置 url schemes 的格式为"tencent"+腾讯QQ互联应用appId,例如“tencent100424468”
集成友盟的 微信/QQ授权登录
1. profile 中添加,后pod update
# 友盟第三方登录
pod 'UMengUShare/Social/QQ' # 集成QQ
pod 'UMengUShare/Social/WeChat' # 集成微信
2.添加依赖库
微信
SystemConfiguration.framework
CoreTelephony.framework
libsqlite3.tbd
libc++.tbd
libz.tbd
SystemConfiguration.framework
libc++.tbd
3. 配置各平台URL Scheme
URL Scheme是通过系统找到并跳转对应app的一类设置,通过向项目中的info.plist文件中加入URL types可使用第三方平台所注册的appkey信息向系统注册你的app,当跳转到第三方应用授权或分享后,可直接跳转回你的app。不过QQ的比较特殊,QQ的是要把appid转换成16进制然后再补齐够八位再添加进去。QQ注册时:tencent19919910和QQ4A6aHN01 (16进制),两者都要加上。不然跳不到qq。
4.iOS9/10设置白名单
如果你的应用使用了如SSO授权登录或跳转到第三方分享功能,在iOS9/10下就需要增加一个可跳转的白名单,即LSApplicationQueriesSchemes,否则将在SDK判断是否跳转时用到的canOpenURL时返回NO,进而只进行webview授权或授权/分享失败。在项目中的info.plist中加入应用白名单,右键info.plist选择source code打开(具体设置在Build Setting -> Packaging -> Info.plist File可获取plist路径)
5.然后就可以在AppDelegate.m 的启动方法中设置 配置UMengUShare/Social appkey之类
使用的地方
- (IBAction)goAuthLogin:(id)sender
{
UIButton *portBtn = sender;
if (portBtn.tag==1000) {
[selfgetUserInfoForPlatform:UMSocialPlatformType_WechatSession];
}else {
[selfgetUserInfoForPlatform:UMSocialPlatformType_QQ];
}
}
- (void)getUserInfoForPlatform:(UMSocialPlatformType)platformType
{
// 判断是否安装QQ 微信
// [QQApiInterface isQQInstalled];
// [WXApi isWXAppInstalled];
[[UMSocialManagerdefaultManager]getUserInfoWithPlatform:platformTypecurrentViewController:selfcompletion:^(id result,NSError *error) {
UMSocialUserInfoResponse *resp = result;
// 第三方登录数据(为空表示平台未提供)
// 授权数据
NSLog(@" uid: %@", resp.uid);
NSLog(@" openid: %@", resp.openid);
NSLog(@" accessToken: %@", resp.accessToken);
NSLog(@" refreshToken: %@", resp.refreshToken);
NSLog(@" expiration: %@", resp.expiration);
// 用户数据
NSLog(@" name: %@", resp.name);
NSLog(@" iconurl: %@", resp.iconurl);
NSLog(@" gender: %@", resp.gender);
// 第三方平台SDK原始数据
NSLog(@" originalResponse: %@", resp.originalResponse);
}];
}
遇到问题:
问题1:文档说这个方法也可以用,结果没调用
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
BOOL result = [[UMSocialManagerdefaultManager]handleOpenURL:url];
if (!result) {
// 其他如支付等SDK的回调
}
return result;
}
使用:- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation{
BOOL result = [[UMSocialManagerdefaultManager]handleOpenURL:url];
if (!result) {
// 其他如支付等SDK的回调
}
return result;
}
就可以了!微信得到了授权成功的回调的用户信息!
拿到的参数概述 通过进行sso,获得授权能获得诸如头像,昵称之类的数据,最重要的Token可UID这两个东西,token类似于签名之类的东西,不是唯一的,普通账号7天就过期了,测试账号好像是一年过期,所以我们不能拿这个进行保存用户,UID是唯一的,唯一对应一个三方的用户,所以,服务端可以拿这个判断一个用户
问题2:腾讯QQ授权登录时,登录授权失败110406。
解决办法:
在腾讯开放平台中,应用接入——应用管理——iOS应用——选择对应的应用——选择QQ登录——切换到应用调试者,添加调试用的QQ号
注意:添加的调试用的QQ号必须是开通开放平台的QQ账号的好友,否则无法添加调试的QQ号。
OK 了;
第三方登录:(需求)
1.是否有取消授权
2.是否定期刷新授权 考虑手机丢失安全
3.获取到的access token具有3个月有效期,过期后提示用户重新登录授权。
(0013)iOS 开发之集成友盟第三方登录相关推荐
- Android集成友盟第三方登录
button点击事件 if (v.getId()==R.id.login_QQ) {if(Build.VERSION.SDK_INT>=23){//QQ需要申请写入权限String[] mPer ...
- Android 集成友盟第三方登录分享
首先导入model 导入这个model . 这个 debug.keystore导入 密码:android build文件粘贴 没有啥粘啥就完了 android {compileSdkVersion ...
- 集成友盟第三方实现QQ微信登录遇到的坑
最近项目集成友盟第三方实现QQ微信登录,在集成实现过程中遇到了一些问题,也对这些问题提出一些自己的解决办法: 集成的过程不就提了,直接上问题: 一.微信登录提示"授权失败,请查看log&qu ...
- 友盟第三方登录精简版QQ遇到的坑
这几天在项目中集成了友盟第三方登录,完成以后微信和微博基本都没什么问题,只有QQ遇到的问题比较烦人.具体的集成步骤我不在此赘述,官方文档上有,而且已经有不少介绍的很详细的文章.个人遇到问题可能不同,此 ...
- 友盟第三方登录 无法切换账号 退出 取消授权
友盟第三方登录后,哪怕你卸载了微博/qq这些客户端,你点击上次登录的方式还是能正常登录的,不需要重新授权..导致一个问题,比如我先用这个QQ登录 后,想换另外一个QQ登录会导致无法登录,哪怕退出QQ, ...
- ios 分享功能 集成友盟分享
1.集成友盟分享,需要先注册一个友盟账号,注册地址 友盟开发者平台官网 友盟集成文档 友盟sdk下载地址友盟sdk下载地址 2,成功下载sdk集成后,微信分享需要配置一下 新浪微博 之类到同样配置就 ...
- Android友盟第三方登录
最近项目中使用到了友盟(社会化Android组件),开始集成的时候没来及细读友盟提供的开发文档.现在来总结一下集成过程中遇到的问题. ##### 1.申请第三方账号 友盟 新浪微博开放平台 ...
- ios 友盟第三方登录遇到的各种坑。
//未使用pod的点友盟官方文档 http://dev.umeng.com/social/ios/quick-integration 首先pod导入 pod 'UMengSocialCOM', '~& ...
- 友盟第三方登录(QQ登录)
第一步打开友盟官网注册一个账号,登录如下图进行操作点击个人中心 进入下一个界面点击管理创建一个应用生成AppKey:如下图 返回首页点击SDK与文档点击进行第三方登录集成点击右边的SDK下载选择你需要 ...
最新文章
- java和python的比较-java学习笔记(与python对比来学)
- [转]文件IO详解(二)---文件描述符(fd)和inode号的关系
- 【计算机网络】传输层 : 总结 ( TCP / UDP 协议 | 寻址与端口 | UDP 协议 | TCP 协议特点 | TCP 连接释放 | TCP 流量控制 | TCP 拥塞控制 ) ★★★
- HTML+CSS+JavaScript复习笔记持更(一)——标签篇
- 在现有K8S集群上安装部署JenkinsX
- kubernetes英语怎么读_陷阱英语单词怎么读?
- 还没搭建过Vue3.x项目?几行代码搞定~
- java的jdbc看不到源码_不了解jdbc,何谈Mybatis的源码解析?
- 前端开发 AMD 和 CMD 的规范区别
- MyEclipse和Eclipse中修改编码
- 联想预装office2019_【联想电脑专属福利】超详细图文教程,手把手教你免费激活正版Office...
- 人工智能基础入门——神经网络讲解
- Linux中用tar命令对文件夹进行打包压缩
- 计算机用户名显示TEMP,Windows 下Temp帐号处理
- 十大免费响应式Joomla主题
- 设置ClickHouse默认用户default的密码
- wince 触摸屏 学习
- c语言筛法求一个范围内的素数,运用埃拉托色尼筛法求解一定范围内的素数.docx...
- 我的世界电脑正版服务器地址大全,《我的世界》服务器地址大全 各个服务器一览分享...
- redis+spring 整合