aliPhoneAuth

立即使用

checkEnvAvailable setAuthUIConfig getLoginToken getCurrentCarrierName quitLoginPage oneKeyLogin checkEnvAvailableWithComplete accelerateLoginPageWithTimeout getLoginTokenWithTimeout cancelLoginVCAnimated

论坛示例

为帮助用户更好更快的使用模块,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。

概述

aliPhoneAuth 模块概述

阿里云号码认证服务模块整合三大运营商特有的数据网关认证能力,升级短信验证码体验,应用于用户注册、登陆、安全校验等场景,可实现用户无感知校验,操作更安全、便捷、低时延。

阿里云号码认证服务功能只可在原生APP中使用,此模块对阿里云的SDK进行集成,可以在APICloud项目中快速接入,在一个方法中调起一键认证服务功能。

不能同时使用的模块:无

模块使用攻略

使用之前须获取阿里云访问密钥,创建认证方案,获取 AccessKeyId和 AccessKeySecret,并获取认证方案的秘钥。

号码认证服务接入流程参考 阿里云号码认证服务使用流程

使用此模块之前建议先配置 config.xml 文件,配置完毕,需通过云端编译生效,配置方法如下:

  • 名称:aliPhoneAuth
  • 参数:apiKeyAndroid、apiKeyIos
  • 配置示例:
  1. <feature name="aliPhoneAuth">
  2. <param name="apiKeyAndroid" value="Android认证方案的秘钥"/>
  3. <param name="apiKeyIos" value="iOS认证方案的秘钥"/>
  4. </feature>
  • 字段描述:

    apiKeyAndroid:(必须配置)用于Android号码认证时,传入阿里云SDK的秘钥。申请方法参考创建认证方案

    apiKeyIos:(必须配置)用于iOS号码认证时,传入阿里云SDK的秘钥。申请方法参考创建认证方案

checkEnvAvailable

检查终端是否支持号码认证

var available = checkEnvAvailable()

返回值

available

  • 类型:boolean

  • 值 :true||false, SDK环境检查函数,检查终端是否支持号码认证。

示例代码

  1. //初始化
  2. var aliPhoneAuth = api.require('aliPhoneAuth');
  3. //检查环境
  4. var ret = aliPhoneAuth.checkEnvAvailable();
  5. if(!ret){
  6. alert('环境不支持');
  7. return;
  8. }

可用性

Android系统

可提供的1.0.0及更高版本

setAuthUIConfig

修改一键登录授权页主题

var exeRes = setAuthUIConfig({‘config’:config})

params

config:

  • 类型:JSON 数组

  • 描述:(必填)需要修改主题的配置,格式如下:

    1. var config=[
    2. {'name':'setLogBtnText','types':['String'],'values':['一键登录2']},
    3. {'name':'setNumberSize','types':['int'],'values':[30]},
    4. {'name':'setNumberColor','types':['int'],'values':[-4970967]},
    5. {"name":"setAppPrivacyOne","types":["String","String"],"values":["用户协议","http://www.dm.com"]}
    6. ];
  • name为函数名(参考[修改一键登录授权页主题]

  • types为参数的类型,需要传数组

  • values是参数值,需要传数组,如果值为颜色,则取android.graphics.Color.parseColor(“#RRGGBB”)的返回值

  • 此方法使用java的反射原理,所以参数类型必需要函数原型一致,函数原型可以参考阿里的SDK,目前只支持java几种原生类型

返回值

exeRes:

  • 类型:JSON 数组

  • 此值为config的回传,并添加了executeResult及exception字段,以说明方法是否执行成功,格式如下:

    1. var config=[
    2. {'name':'setLogBtnText','types':['String'],'values':['一键登录2'],'executeResult':'success'},
    3. {'name':'setNumberSize','types':['int'],'values':[30],'executeResult':'success'},
    4. {'name':'setNumberColor','types':['int'],'values':[-4970967],'executeResult':'success'},
    5. {"name":"setAppPrivacyOne","types":["String","String"],"values":["用户协议","http://www.dm.com"],'executeResult':'failure','exception':'nomethod'}
    6. ];
  • executeResult: 执行结果,success为执行成功,failure为执行失败

  • exception:当executeResult=failure,此字段有值,值为执行失败的原因

示例代码

  1. //初始化
  2. var aliPhoneAuth = api.require('aliPhoneAuth');
  3. //检查环境
  4. var ret = aliPhoneAuth.checkEnvAvailable();
  5. if(!ret){
  6. alert('环境不支持');return;
  7. }
  8. //一键登录修改授权页主题
  9. //name为函数名,types为参数的类型,需要传数组,values是参数值,需要传数组
  10. //此方法使用java的反射原理,所以参数类型必需要函数原型一致,函数原型可以参考阿里的SDK,目前只支持java几种原生类型
  11. //此方法后将config回传,并添加了executeResult及exception字段,以说明方法是否执行成功
  12. //方法集可以参考[https://help.aliyun.com/document_detail/144231.html?spm=a2c4g.11186623.6.557.734e360cSAs1FG#h2-6-1-20]
  13. //(经测试,阿里云的文档中,有些方法是不存在的)
  14. var config=[
  15. {'name':'setLogBtnText','types':['String'],'values':['一键登录2']},
  16. {'name':'setNumberSize','types':['int'],'values':[30]},
  17. {'name':'setNumberColor','types':['int'],'values':[-4970967]},
  18. {"name":"setAppPrivacyOne","types":["String","String"],"values":["用户协议","http://www.baidu.com"]}
  19. ];
  20. var param = {'config':config};
  21. var exeRes =aliPhoneAuth.setAuthUIConfig(param);

可用性

Android系统

可提供的1.0.0及更高版本

getLoginToken

一键登录唤起授权页并获取token

getLoginToken({timeout:number}, callback(ret, err))

params

timeout:

  • 类型:int
  • 描述:(必填)唤起授权页的超时时间,单位为毫秒,超过此时间未唤起则会回调,并提示超时

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. event: '' //回调事件
  3. code'' //响应码
  4. msg:'' //提示信息
  5. }

ret.event的值有以下几种情况:

1: normal为调用函数的正常返回

2: onAuthUIControlClick 为控件点击事件回调,如点击“其他登录方式”,具体参考说明

3: onTokenResultSuccess为获取token成功的回调,onTokenResultFailed获取token失败的回调

4: onPreLoginResultSuccess为预取号调用成功的回调,onPreLoginResultFailed为预取号调用失败的回调

ret.code值有以下几种情况

1:值小于等于0时,一般为参数错误,如:”timeout参数必须大于0”,具体见ret.msg的值

2:值等于1时,则函数调用成功,ret.event=‘normal’

3:值大于1时,为阿里云SDK返回值,具体可以参考阿里云SDK返回值,值如下:

返回码返回码描述建议
600000获取token成功
600001唤起授权页成功
600002唤起授权页失败建议切换到其他登录方式
600004获取运营商配置信息失败创建工单联系工程师
600005手机终端不安全切换到其他登录方式
600007未检测到sim卡提示用户检查 SIM 卡后重试
600008蜂窝网络未开启提示用户开启移动网络后重试
600009无法判断运营商创建工单联系工程师
600010未知异常创建工单联系工程师
600011获取token失败切换到其他登录方式
600012预取号失败
600013运营商维护升级,该功能不可用创建工单联系工程师
600014运营商维护升级,该功能已达最大调用次数创建工单联系工程师
600015接口超时切换到其他登录方式
600017AppID、Appkey解析失败秘钥未设置或者设置错误,请先检查秘钥信息,如木遥无问题创建工单联系工程师
600021点击登录时检测到运营商已切换切换到其他登录方式
700000点击返回,?户取消免密登录
700001点击切换按钮,?户取消免密登录
700002点击登录按钮事件
700003点击check box事件
700004点击协议富文本文字事件

err:

无err返回

示例代码

  1. //初始化
  2. var aliPhoneAuth = api.require('aliPhoneAuth');
  3. //检查环境
  4. var ret = aliPhoneAuth.checkEnvAvailable();
  5. if(!ret){
  6. alert('环境不支持');
  7. return;
  8. }
  9. //弹起授权页面
  10. //ret.event的值有以下几种情况
  11. //1: normal为调用函数的正常返回
  12. //2: onAuthUIControlClick 为控件点击事件回调,如点击“其他登录方式”,具体参考:https://help.aliyun.com/document_detail/144231.html?spm=a2c4g.11186623.6.557.734e360cSAs1FG#h2-5-19-19
  13. //3: onTokenResultSuccess为获取token成功的回调,onTokenResultFailed获取token失败的回调
  14. //4: onPreLoginResultSuccess为预取号调用成功的回调,onPreLoginResultFailed为预取号调用失败的回调
  15. //
  16. //除了使用ret.event外,应该关注ret.code,当ret.code<0时,一般为参数错误,具体见ret.msg
  17. //函数调用成功,都会返回1,ret.event=‘normal’
  18. //其他ret.code参考https://help.aliyun.com/document_detail/144231.html?spm=a2c4g.11186623.6.557.734e360cSAs1FG#h2-5-18-sdk-18
  19. var param = {timeout:3000};
  20. aliPhoneAuth.getLoginToken(param, function(ret, err){
  21. if(ret.code=='600000'){//获取token成功
  22. aliPhoneAuth.quitLoginPage();//关闭一键登录页面
  23. //调用服务器业务...
  24. }else if(ret.code=='700000'){//点击返回,用户取消授权
  25. }else if(ret.code=='700001'){//点击切换按钮,用户取消授权
  26. aliPhoneAuth.quitLoginPage();//关闭一键登录页面
  27. }
  28. });

可用性

Android系统

可提供的1.0.0及更高版本

getCurrentCarrierName

返回默认上网卡运营商

var name=getCurrentCarrierName()

params

返回值

name:

  • 类型:字符串
  • 描述:值为 CMCC、CUCC、CTCC

示例代码

  1. var aliPhoneAuth = api.require('aliPhoneAuth');
  2. aliPhoneAuth.getCurrentCarrierName();//返回默认上网卡运营商

可用性

Android系统

可提供的1.0.0及更高版本

quitLoginPage

退出登录授权页

quitLoginPage()

params

示例代码

  1. var aliPhoneAuth = api.require('aliPhoneAuth');
  2. aliPhoneAuth.quitLoginPage();//关闭一键登录页面

可用性

Android系统

可提供的1.0.0及更高版本

oneKeyLogin

一键登录集成入口

oneKeyLogin({params}callback(ret, err))

params

timeout:

  • 类型:数字
  • 描述:(可选项)延迟等待时间,默认3.0。

navIsHidden:

  • 类型:数字
  • 描述:(可选项)是否显示标题(0显示,1不显示)
  • 默认值:0

navColor:

  • 类型:字符串
  • 描述:(可选项)导航颜色。例:#000000

title:

  • 类型:字符串
  • 描述:(可选项)标题
  • 默认值:一键登录

logoImage:

  • 类型:字符串
  • 描述:(可选项)logo图片,只支持网络图片,建议不传。

sloganText:

  • 类型:字符串
  • 描述:(可选项)默认”**提供认证服务“,建议不改文案。

numberColor:

  • 类型:字符串
  • 描述:(可选项)号码颜色。例:#000000
  • 默认值:一键登录

numberFont:

  • 类型:字符串
  • 描述:(可选项) 号码字体大小。例:30.0

loginBtnText:

  • 类型:字符串
  • 描述:(可选项) 按钮文案,默认”一键登录“。

buttonColor:

  • 类型:字符串
  • 描述:(可选项) 按钮颜色。例:#000000

changeBtnTitle:

  • 类型:字符串
  • 描述:(可选项)切换其他方式文案。

privacyOne:

  • 类型:字符串
  • 描述:(可选项)协议1 。例:[“《协议》”,”https://www.dm.com”]

privacyTwo:

  • 类型:字符串
  • 描述:(可选项) 协议2,不能与协议1同名。例:[“《协议2》”,”https://www.dm.com”]

checkBoxIsHidden:

  • 类型:字符串
  • 描述:(可选项) 是否显示协议选择框(0隐藏,1显示),默认0。

checkBoxIsChecked:

  • 类型:字符串
  • 描述:(可选项) 是否默认选中协议(0选中,1未选择),默认0

privacyPreText:

  • 类型:字符串
  • 描述:(可选项) 协议前面部分描述。

supportedInterfaceOrientations:

  • 类型:字符串
  • 描述:(可选项)横竖屏支持(0横竖屏,1竖屏,2横屏),不建议改。
  • 默认值:0

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. resultCode: "600000", //字符串;参考阿里云号码认证服务返回码
  3. token: "" //字符串,成功获取token的信息
  4. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. resultCode: “” //字符串;参考阿里云号码认证服务返回码
  3. }

示例代码

  1. aliPhoneAuth.oneKeyLogin({
  2. timeout: 5.0,
  3. privacyOne: ["《协议1》", https://www.apicloud.com"],
  4. privacyTwo: ["《协议2》", https://www.apicloud.com"]
  5. }, function(ret, err) {
  6. alert(JSON.stringify(ret));
  7. });

可用性

iOS系统

可提供的1.0.0及更高版本

checkEnvAvailableWithComplete

接口检查及准备接口调用环境

checkEnvAvailableWithComplete( callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. resultCode: "600000", //字符串;参考阿里云号码认证服务返回码
  3. }

示例代码

  1. var aliPhoneAuth = api.require('aliPhoneAuth');
  2. aliPhoneAuth.checkEnvAvailableWithComplete(function(ret, err){
  3. alert(JSON.stringify(ret));
  4. });

可用性

iOS系统

可提供的1.0.0及更高版本

accelerateLoginPageWithTimeout

调用取号接口,加速授权页的弹起

accelerateLoginPageWithTimeout({params}, callback(ret, err))

params

timeout:

  • 类型:字符串
  • 描述:(可选项)延迟等待时间(默认3.0s)。例:5.0

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. resultCode: "600000", //字符串;参考阿里云号码认证服务返回码
  3. }

示例代码

  1. var aliPhoneAuth = api.require('aliPhoneAuth');
  2. aliPhoneAuth.accelerateLoginPageWithTimeout({
  3. timeout: '5.0'
  4. },function(ret, err){
  5. alert(JSON.stringify(ret));
  6. });

可用性

iOS系统

可提供的1.0.0及更高版本

getLoginTokenWithTimeout

一键登录获取token

getLoginTokenWithTimeout({params}, callback(ret, err))

params

timeout:

  • 类型:字符串
  • 描述:(可选项)延迟等待时间(默认3.0s)。例:5.0

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. resultCode: "600000", //字符串;参考阿里云号码认证服务返回码
  3. }

示例代码

  1. var aliPhoneAuth = api.require('aliPhoneAuth');
  2. aliPhoneAuth.getLoginTokenWithTimeout({
  3. timeout: 5.0
  4. },function(ret, err){
  5. alert(JSON.stringify(ret));
  6. });

可用性

iOS系统

可提供的1.0.0及更高版本

cancelLoginVCAnimated

一键登录注销登录页面

cancelLoginVCAnimated()

示例代码

  1. var aliPhoneAuth = api.require('aliPhoneAuth');
  2. aliPhoneAuth.cancelLoginVCAnimated();

可用性

iOS系统