aliPhoneAuth

立即使用

论坛示例

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

概述

aliPhoneAuth 模块概述

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

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

不能同时使用的模块:无

模块使用攻略

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

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

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

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

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

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

checkEnvAvailable

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

var available = checkEnvAvailable()

返回值

available

  • 类型:boolean

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

示例代码

//初始化
var aliPhoneAuth = api.require('aliPhoneAuth');

//检查环境
var ret = aliPhoneAuth.checkEnvAvailable();
if(!ret){
    alert('环境不支持');
    return;
}

可用性

Android系统

可提供的1.0.0及更高版本

setAuthUIConfig

修改一键登录授权页主题

var exeRes = setAuthUIConfig({'config':config})

params

config:

  • 类型:JSON 数组

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

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

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

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

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

返回值

exeRes:

  • 类型:JSON 数组

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

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

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

示例代码

//初始化
var aliPhoneAuth = api.require('aliPhoneAuth');

//检查环境
var ret = aliPhoneAuth.checkEnvAvailable();
if(!ret){
    alert('环境不支持');return;
}

//一键登录修改授权页主题
//name为函数名,types为参数的类型,需要传数组,values是参数值,需要传数组
//此方法使用java的反射原理,所以参数类型必需要函数原型一致,函数原型可以参考阿里的SDK,目前只支持java几种原生类型
//此方法后将config回传,并添加了executeResult及exception字段,以说明方法是否执行成功
//方法集可以参考[https://help.aliyun.com/document_detail/144231.html?spm=a2c4g.11186623.6.557.734e360cSAs1FG#h2-6-1-20]
//(经测试,阿里云的文档中,有些方法是不存在的)
var config=[
    {'name':'setLogBtnText','types':['String'],'values':['一键登录2']},
    {'name':'setNumberSize','types':['int'],'values':[30]},
    {'name':'setNumberColor','types':['int'],'values':[-4970967]},
    {"name":"setAppPrivacyOne","types":["String","String"],"values":["用户协议","http://www.baidu.com"]}
];
var param = {'config':config};
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 对象
  • 内部字段:
{
    event: ''   //回调事件
    code:''    //响应码
    msg:''      //提示信息
}

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 接口超时 切换到其他登录方式
600017 AppID、Appkey解析失败 秘钥未设置或者设置错误,请先检查秘钥信息,如木遥无问题创建工单联系工程师
600021 点击登录时检测到运营商已切换 切换到其他登录方式
700000 点击返回,?户取消免密登录
700001 点击切换按钮,?户取消免密登录
700002 点击登录按钮事件
700003 点击check box事件
700004 点击协议富文本文字事件

err:

无err返回

示例代码

//初始化
var aliPhoneAuth = api.require('aliPhoneAuth');

//检查环境
var ret = aliPhoneAuth.checkEnvAvailable();
if(!ret){
    alert('环境不支持');
    return;
}

//弹起授权页面
//ret.event的值有以下几种情况
//1: normal为调用函数的正常返回
//2: onAuthUIControlClick 为控件点击事件回调,如点击“其他登录方式”,具体参考:https://help.aliyun.com/document_detail/144231.html?spm=a2c4g.11186623.6.557.734e360cSAs1FG#h2-5-19-19
//3: onTokenResultSuccess为获取token成功的回调,onTokenResultFailed获取token失败的回调
//4: onPreLoginResultSuccess为预取号调用成功的回调,onPreLoginResultFailed为预取号调用失败的回调
//
//除了使用ret.event外,应该关注ret.code,当ret.code<0时,一般为参数错误,具体见ret.msg
//函数调用成功,都会返回1,ret.event=‘normal’
//其他ret.code参考https://help.aliyun.com/document_detail/144231.html?spm=a2c4g.11186623.6.557.734e360cSAs1FG#h2-5-18-sdk-18
var param = {timeout:3000};
aliPhoneAuth.getLoginToken(param, function(ret, err){
    if(ret.code=='600000'){//获取token成功
        aliPhoneAuth.quitLoginPage();//关闭一键登录页面

        //调用服务器业务...        
    }else if(ret.code=='700000'){//点击返回,用户取消授权

    }else if(ret.code=='700001'){//点击切换按钮,用户取消授权
        aliPhoneAuth.quitLoginPage();//关闭一键登录页面
    }
});

可用性

Android系统

可提供的1.0.0及更高版本

getCurrentCarrierName

返回默认上网卡运营商

var name=getCurrentCarrierName()

params

返回值

name:

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

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

quitLoginPage

退出登录授权页

quitLoginPage()

params

示例代码

var aliPhoneAuth = api.require('aliPhoneAuth');
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 对象
  • 内部字段:
{
    resultCode: "600000",      //字符串;参考阿里云号码认证服务返回码
    token: "" //字符串,成功获取token的信息
}

err:

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

示例代码

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

可用性

iOS系统

可提供的1.0.0及更高版本

checkEnvAvailableWithComplete

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

checkEnvAvailableWithComplete( callback(ret, err))

callback(ret, err)

ret:

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

示例代码

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

可用性

iOS系统

可提供的1.0.0及更高版本

accelerateLoginPageWithTimeout

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

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

params

timeout:

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

callback(ret, err)

ret:

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

示例代码

var aliPhoneAuth = api.require('aliPhoneAuth');
aliPhoneAuth.accelerateLoginPageWithTimeout({
    timeout: '5.0'
},function(ret, err){
    alert(JSON.stringify(ret));
});

可用性

iOS系统

可提供的1.0.0及更高版本

getLoginTokenWithTimeout

一键登录获取token

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

params

timeout:

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

callback(ret, err)

ret:

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

示例代码

var aliPhoneAuth = api.require('aliPhoneAuth');
aliPhoneAuth.getLoginTokenWithTimeout({
    timeout: 5.0
},function(ret, err){
    alert(JSON.stringify(ret));
});

可用性

iOS系统

可提供的1.0.0及更高版本

cancelLoginVCAnimated

一键登录注销登录页面

cancelLoginVCAnimated()

示例代码

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

可用性

iOS系统