一键登录产品说明
产品功能
产品简介
云信一键登录整合三大运营商,支持国内三网手机号段,Android/iOS手机,可通过一键获取用户手机号的SDK产品,建立以手机号码作为去中心化的开放账号体系,提升注册转换效率的必备功能。
产品优势:
- 快捷:实现“1秒登录”
- 高效:注册流程简单,流失率低
- 便宜:价格远低于验证码短信
- 安全:掩码机制、加密传输
隐私条款
根据工信部要求,需要在打开APP时弹出相关用户隐私条款政策,充分告知关于用户隐私数据收集范围及用途。
例如:APP的隐私条款中需增加云信一键登录相关的隐私条款
“为了改善注册及登录界面用户体验,集成第三方SDK一键登录服务:云信一键登录SDK,用于帮助实现用户一键登录行为。为了实现网关取号技术,云信一键登录SDK需要获取IP地址、网卡(MAC)地址、国际移动设备识别码(IMEI)、sim卡信息,并会收集手机机型、系统类型、系统版本、网络环境、网关取号报错日志等用于改善SDK性能。
关于云信一键登录SDK采集终端用户数据的范围、用途及安全措施请参照网易云信一键登录SDK运营方的隐私政策。”
使用场景
App注册/登录页面进行一键登录并建立账户,也可以使用在任何需要获取手机号的场景。例如:手机号绑定环节,修改/找回密码环节,支付环节验证手机号等等。
能力申请
接入方需在云信后台认证公司资质,报备应用信息,以获取appid、appkey等参数用于SDK集成。安卓和iOS需分开申请appid,需报备的信息如下:
信息 | 是否必填 |
---|---|
应用名称 | 必填 |
应用类型 | 必填 |
应用icon | 必填 |
所属行业 | 必填 |
Android包名 | 必填 |
Android包签名 | 必填 |
iOS Bundle ID | 必填 |
iOS RSA公钥 | 非必填 |
Android RSA公钥 | 非必填 |
SDK接入
SDK支持系统
Android4.1以上,iOS8.0以上
SDK集成增量体积
Android SDK:全部增量-860kb
- aar资源包470kb,so资源包根据用户自身集成
- 主流3个架构(arm64-v8a,armeabi,armeabi-v7a):485kb
- armeabi-v7a一个架构:288kb
iOS SDK:ipa增量1.3M
SDK取号的原理
通过运营商的数据网关获取号码,因此需要用户开启数据网络量并且给予应用蜂窝数据权限才能使用,当信号弱或者网络有干扰时,时延会高于平均值,取号成功率降低。
初始化
不经初始化SDK无法调用,主要用于账号验签,以及相关配置信息拉取。
取号阶段
在用户无感知的情况下进行网络判断、蜂窝数据网络切换和网关取号等操作(以上操作均需消耗一定时间),并缓存凭证scrip,以便在用户登录时大大缩短拉起授权页的耗时(因为取号已完成)。
成功获取到临时令牌;三大运营商临时令牌有效期如下
移动——72小时;
联通——1小时;
电信——1小时;
取号所需网络环境
运营商取号能力是通过数据网关实现,取号过程须在数据流量打开的情况下才能进行。(WiFi和数据流量同时打开时,SDK会强制切换到数据流量执行取号逻辑)
当用户如果关闭数据流量、或改变运营商分配给手机的IP地址(如VPN代理,路由器VPN、手机VPN、手机热点),都将无法取号;若当前信号弱或者网络有干扰时,时延会高于平均值,取号成功率降低
超时设置
SDK默认超时设置为4000ms,也可使用SDK提供的方法设置取号超时,单位为毫秒。
授权阶段
-
云信一键登录SDK必须经由用户授权才能正常执行获取号码的行为,在授权页上会展示手机掩码提供给用户确认
-
运营商根据来自SIM卡的访问请求,识别该数据流量对应的手机号码,加密后返回手机掩码及临时凭证。
-
SDK获取返回的临时凭证并展示运营商授权页
授权页的拉起
由用户触发或者自动触发的方式执行拉取授权页方法
当取号缓存scrip有效时,SDK能几乎无耗时地拉起授权页;
当取号缓存scrip已失效(用户换卡、缓存有效期已过等)或不存在时,SDK需要先消耗一定时间进行取号,取号成功才能拉起授权页。此取号阶段的用户交互(如取号缓冲页)由业务方自行处理。
授权页元素的自定义和插入自定义控件
对页面内的元素的自定义,请参考SDK开发文档的章节;
若希望在页面中插入其他第三方登录方式,或其他内容,可通过插入自定义控件实现,请参考SDK开发文档的章节
注:自定义的控件不允许覆盖SDK默认的UI,如运营商授权协议
授权页的销毁
为提供更灵活的授权页处理方式,SDK将大部分的授权页关闭逻辑交给业务方处理,可分为以下两种模式:
A.授权页面自动销毁
-
在授权登录页面,当用户主动点击左左上角返回按钮时,授权页面会自动销毁;
-
安卓 SDK,当用户点击手机的硬件返回键(相当于取消登录),授权页面会自动销毁;
-
当用户设置一键登录或者其他自定义控件为自动销毁时,得到回调后,授权页面会自动销毁
B.开发者手动销毁
-
当开发者设置一键登录回调为手动销毁时,可控制授权页销毁时机,一键登录成功后继续等待,在得到服务端传回的用户信息后执行手动销毁,如果失败则选择跳入其他登录方式,并执行销毁操作
-
当开发者设置自定义控件为手动销毁时,在监听到回调后执行销毁操作。
其他具体细节请参考开发文档。
一键登录阶段
用户授权并点击一键登录,发起一键登录授权请求后,SDK后台向运营商发起校验请求,运营商收到token请求后进行校验,运营商校验通过后传递token到App客户端
token获取超时时间
联通默认超时间隔:30秒
移动默认超时间隔:8秒
电信默认超时间隔:10秒
token获取的限制
token有效期3min,一次有效;
移动限制:同一用户(手机号)10分钟内获取token且未使用的数量不超过30个
联通限制:同一用户(手机)10分钟内获取token不超过30个
服务端接口联调
服务端需要凭token置换用户授权的本机号码,接口可报备服务端出口IP地址后才能正常使用,不建议从客户端直接调用。
使用条件
网络制式
-
数据流量环境下,SDK功能正常使用
-
在WiFi+数据网络情况下,SDK会调用方法强行将当前的网络通道由WiFi通道切换到数据流量通道
-
在纯WiFi环境下,SDK功能无法使用。SDK内部做了判断,会弹出相应提示
三网网络环境条件
目前云信一键登录SDK支持移动3/4/5G、联通3/4/5G、电信4/5G的取号能力
关于Android双卡问题
- SDK的一键免密登录功能和本机校验功能的实现都必须通过数据流量通道。
- SDK内部会获取当前手机的数据流量卡运营商,所以双卡情况下,一键免密登录和本机校验都是对当前的数据流量卡进行获取。
关于iOS双卡问题
- 取流量卡进行免密登录或者本机认证
OPPO等部分终端网络问题
oppo手机第一次登录必须使用纯流量环境。
由于oppo操作系统增加了应用的数据网络使用权限,在手机wifi和数据网络同时打开时,应用首次打开,将默认使用wifi数据通道,且无法通过SDK强制切换到数据通道取号,会导致取号失败
产品交互
注意:判断登录态
对于已经登录的用户任何页面不需要调用云信一键登录的逻辑和步骤
交互流程
云信一键登录有完善的返回码,根据返回码可考虑如下交互流程。
-
云信一键登录初始化失败:返回失败 转入:原有流程
-
预取号失败:返回失败 转入:原有流程
-
拉起授权页失败:返回失败 转入:原有流程
-
授权页点击事件:左上角返回+物理返回按钮,返回:点击事件返回码 转入:登录前界面
-
授权页点击事件:一键登录按钮,返回:超时或无法校验 增加交互:一键登录失败,将转入短信注册 然后定时跳转转入:原有流程
-
授权页点击事件:选择其他方式登录 返回:自定义事件控制 转入:原有流程
额外产品逻辑
-
在后台配置针对云信一键登录服务的开关,用做回滚备用方案
-
云信一键登录自定义界面的控件
a. 【其他方式登录】适用于:用户双卡情况下当前流量卡不是想登录的号码,用户希望登录的手机号码在别的手机上
b. 【微信/QQ/微博快速登录组件】适用于:把云信一键登录作为主要登录逻辑第一层可集成快速登录组件
-
在用户登录后,可缓存用户cookie,并在下次用户打开时,让用户进入已登录状态
问题排查
-
打印报错信息,根据报错信息,查看返回码文档,并进一步解决问题
-
查找本地网络问题 是否因为网络环境不支持导致调用起不来
-
查找本地程序包配置appid跟appkey是否跟后台一致
-
查找云信一键登录后台的appid跟appkey,是否正确获取
-
查看资源导入是否异常
常见问题
- 一键登录/本机号校验的应用场景?
一键登录适用于一切互联网APP注册、登录环节
本机号校验适用于所有基于手机号码进行风控的场景。
- 一键登录与本机校验的区别?
一键登录具备授权页面,开发者经用户授权后可获得号码,适用于注册、登录等场景;
本机号码校验没有授权页面,不返回号码,仅返回待校验号码是否本机的校验结果
- 支持哪些网络环境?
目前云信一键登录SDK支持移动3/4/5G、联通3/4/5G、电信4/5G的取号能力。
A.终端仅开启数据网络时,取号功能为正常使用
B.终端仅WIFI开启、移动数据关闭时,取号功能无法使用(提前取号拿到临时凭证时,有效期内可用)
C.终端WIFI/流量双开情况下,支持流量切换方法的多数终端
- 能否判断携号转网用户呢?
无法判断是否为携号转网用户,携号转网用户可使用云信一键登录
- 支持哪些终端?
支持Android4.1-10和IOS8.0及以上,并需终端内置SIM卡符合运营商网络制式,如iphone 5s国行不支持电信4G,则不可用于电信4G卡校验
- 是否支持小程序和H5?是否支持其他移动端开发框架或平台?
小程序:不支持。
H5:纯浏览器H5不支持;由原生app套壳的H5,只要开发者能够使用JS调用原生即可支持。
- 取号原理是如何实现的?在纯wifi环境下为什么无法使用?为什么一定需要3G4G流量环境下才可用?
云信一键登录SDK会获取本机的IMSI,通过运营商数据网关获取当前流量卡的号码。
通过数据流量访问基站,运营商可以通过基站内访问的IMSI来判断当前手机是否插入的这张卡,达到本机号码访问的确认。
如果通过WIFI我们就认定 IMSI=手机号,则羊毛党可利用root或者越狱修改手机参数,进行欺诈行为,将无法确认手机卡是否插在本机之内及是否本人使用该手机号进行登录注册行为,属于不安全的行为。
- 一键登录的计费方式是什么?
通过token成功置换到手机号码计费一次
- 是否支持虚拟卡商号码取号登录?
不支持,虚商虽然租用三大运营商的网络来提供服务,但是其号码的激活绑定关系不归属于三大运营商所有。
- 是否具备用户取号频次限制?
目前云信一键登录还未开发取号频次限制,但异常取号有监控报警,疑似攻击行为将触发停服逻辑。请勿自行压测。
- 双卡情况下会读取哪张SIM卡?
SDK仅能校验当前手机所使用的数据流量卡,所以双卡情况下,流量主卡使用的哪张就校验哪张。
- OPPO手机终端网络问题
由于OPPO手机操作系统增加了应用的数据网络优先使用权限,在手机wifi和数据网络同时打开时,应用首次打开默认使用wifi数据通道,且无法通过SDK强制切换到数据网络取号,最终导致取号失败。
解决方法:用户须在纯数据网络环境打开应用,用户授权应用使用数据网络权限后SDK切换功能才能使用
- 当网络环境不支持发起网关认证时,如何进行后续操作?
系统调用初始化阶段会返回当前网络环境是否支持进行网关认证,当返回不支持时,您可以引导用户通过短信方式进行认证
- 如何确保认证结果正确?
基于运营商网络对SIM卡的电信级认证能力,认证结果准确可靠
- 调用过程的安全性如何保障?
核心认证过程分为2步。
第1步,通过移动数据网络发起请求,获取accessCode,关于accessCode的有效性说明如下:
(1)有效次数为一次有效,使用后立即失效。
(2)有效时长。有效期为1分钟。在第2步请求认证结果时,我们会通过密钥对服务端请求进行验证
第2步,通过accessCode和手机号请求认证结果。
- 验证是否需要用户授权?
需要,请确保已获得用户授权再发起验证
- SDK包增量是多少?
Android SDK:aar资源包470kb,so资源包根据用户自身集成
全部架构增量:860kb
主流3个架构(arm64-v8a,armeabi,armeabi-v7a):485kb
armeabi-v7a一个架构:288kb
iOS SDK:ipa增量1.3M
- 什么是虚商,互联网套餐卡,esim卡的区别
虚拟运营商(VNO—Virtual Network Operator),是指拥有某种或者某几种能力(如技术能力、设备供应能力、市场能力等)与电信运营商在某项业务或者某几项业务上形成合作关系的合作伙伴,电信运营商按照一定的利益分成比例,把业务交给虚拟运营商去发展,其自身则腾出力量去做最重要的工作,同时电信运营商自己也在直接发展用户。
虚拟运营商就像是代理商,他们从移动、联通、电信三大基础运营商那里承包一部分通讯网络的使用权,然后通过自己的计费系统、客服号、营销和管理体系把通信服务卖给消费者。
19家虚拟运营商大致可以划分为线上渠道类、手机分销类、游戏类、行业应用类四大类型,在每家虚拟运营商的背后,都有着自己一直擅长的主要业务,例如京东、阿里一直致力于电商行业,北纬通信、蜗牛主营游戏业务,苏宁、国美是连锁家电卖场、迪信通、话机世界等一直经营着手机业务。
互联网套餐卡:腾讯公司联合中国联通推出的腾讯大王卡.