aliPhoneAuth
checkEnvAvailable setAuthUIConfig getLoginToken getCurrentCarrierName quitLoginPage oneKeyLogin checkEnvAvailableWithComplete accelerateLoginPageWithTimeout getLoginTokenWithTimeout cancelLoginVCAnimated
论坛示例
为帮助用户更好更快的使用模块,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。
概述
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系统