一键登录

一键登录

前言

进行一键登录接入前请先完成SDK的接入与初始化。

接入前准备

前联系 QQ:2880983157 开通权限,获取一键登录参数。

功能说明

账号免密认证方案,依托运营商的移动数据网络,采用“通信网关取号”及 SIM卡识别等技术,准确识别用户手机号码,实现一键登录,并可有效规避短信验证码泄露风险。

整体流程

注意

"蓝色流程”由合作方实现对接。

“绿色流程”由个推实现,合作方可进行了解。

成功对接效果图:

添加配置项到info.plist

  • 其中 GyUmcAppName 是一键登录页面Logo下方的 AppName

接入方可以根据自己产品需要接入自己产品的Logo,如果不接入自己产品的Logo,将使用默认的Logo。
接入方添加自己应用的Logo的步骤如下:

  1. HTMLResource.bundle 引入到项目
  2. HTMLResource.bundle/images/topIcon/topIcon-logo.png 替换为自已应用的图标

注意事项: Logo图标名称必须命名为topIcon-logo.png,尺寸大小必须240*240。

接口列表

方法 功能说明
oneTapLoginController 一键登录接口

接口说明


/**
 一键登录接口

 @param controller 当前视图
 @param smsTemplateId 短信模板,配置该字段则可以使用云验证
 @param callback 通用接口回调
 */
+ (void)oneTapLoginController:(UIViewController *)controller smsTemplateId:(NSString *)smsTemplateId withCallback:(GyVerifyCallback)callback;

在一键登录未通过或者用户点击切换账号的时候,SDK会调用云验证进行验证。如果开发者需要自己处理这种情况,将smsTemplateId配置为null即可。

输入参数

参数名称 是否必填 类型 描述
controller UIViewController 当前UIViewController实例
smsTemplateId String 短信模板,在一键登录未通过,调用云验证的时候会用到该参数
callBack GyCallBack 回调

调用示例

[GeYanSdk oneTapLoginController:self
                  smsTemplateId:@"0"
                   withCallback:^(NSDictionary *verifyDictionary) {
                       NSObject *msg = verifyDictionary[@"msg"];
                       if ([msg isKindOfClass:[NSString class]]) {
                           [[CommonToastHUD sharedInstance] showTips:verifyDictionary[@"msg"]];
                       } else {
                           [[CommonToastHUD sharedInstance] showTips:@"成功"];
                       }
                       NSLog(@"Callback for user :%@", verifyDictionary);
                   }];

返回示例

一键登录会通过 GyVerifyCallback 返回结果.

GyVerifyCallback:

typedef void (^GyVerifyCallback)(NSDictionary *verifyDictionary);

verifyDictionary返回示例:

{
    code=30000,             
    msg='{"verifyType":0,"data":{"token":"je3o9NNU0w6kpyDEBpIdC4","expiredTime":1553139758029}}'
}
  • verifyDictionary 详细说明:
属性 类型 属性说明
code int 状态码
msg String 验证成功的时候,包含验证结果信息,验证失败的时候,为状态码描述信息
  • 验证成功的时候 msg说明:

验证成功的时候,GYResponse中msg会是如下的JSON格式字符串.


//一键登录成功
{
    "msg":{
            "verifyType":0,
            "data":{
                "token":"qUiRvTAFLeAb36ubCtpcj",
                "expiredTime":1552887621123
            }
    }
}
//一键登录失败,云短信验证成功
{
    "msg":{
            "verifyType":1,
            "data":{
                "pn":"17768345313",
                "token":"GY-20180918-1-omsG91sfte8LUteahzOh06"
            }
    }
}

一键登录成功返回参数解释:

字段 类型 说明
verifyType int 验证类型,0为一键登录验证,1为云短信验证。
data JSON 验证结果
token String 用户授权凭证信息,可用于从服务端获取完整手机号码。
expiredTime long token有效期

云短信验证成功返回参数解释:

字段 类型 说明
verifyType int 验证类型,0为一键登录验证,1为云短信验证。
data JSON 验证结果
token String 在云验证成功的时候,该值是请求唯一id,可用作服务端二次校验。
pn String 用户输入的完整手机号码

本地资源包安全校验

注意HTMLResource.bundle目录下除logo外的其他文件不可修改,不可覆盖,否则将不能使用免密登录。修改后使用登录功能将会接收到-7999001的错误返回码。

状态码

错误码 含义
0 请求成功
-64 permission-denied(无权限访问)
-65 API-request-rates-Exceed-Limitations(调用接口超限)
-68 接口冻结(如测试次数达到上限、合同余额不足、合同到期等)
-10001 取号失败
-10002 参数错误
-10003 解密失败
-10004 ip受限
-10005 异网取号回调参数异常
-10006 Mdn取号失败,且属于电信网络
-10007 重定向到异网取号
-10008 超过预设取号阈值
-10009 时间戳过期
-20005 sign-invalid(签名错误)
客户端自定义
-7999 服务不可用(其他错误,默认返回值)
-8000 responseCode非200(网络错误,http状态码错误)
-8100 无网络连接(网络错误)
-8101 获取失败(切换失败)
30000 登录成功
30001 当前环境不适合免密登录
30002 用户点击了其他登录方式
30003 用户关闭验证界面

其余情况请参考状态码汇总说明

文档中心搜索