为帮助用户更好更快的使用插件,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。
** aliPhoneAuth 插件概述**
阿里云号码认证服务插件整合三大运营商特有的数据网关认证能力,升级短信验证码体验,应用于用户注册、登陆、安全校验等场景,可实现用户无感知校验,操作更安全、便捷、低时延。
阿里云号码认证服务功能只可在原生APP中使用,此插件对阿里云的SDK进行集成,可以在YonBuilder移动开发项目中快速接入,在一个方法中调起一键认证服务功能。
不能同时使用的插件:无
插件使用攻略
使用之前须获取阿里云访问密钥,创建认证方案,获取 AccessKeyId和 AccessKeySecret,并获取认证方案的秘钥。
号码认证服务接入流程参考 阿里云号码认证服务使用流程
使用此插件之前建议先配置 config.xml 文件,配置完毕,需通过云端编译生效,配置方法如下:
<feature name="aliPhoneAuth">
<param name="apiKeyAndroid" value="Android认证方案的秘钥"/>
<param name="apiKeyIos" value="iOS认证方案的秘钥"/>
</feature>
字段描述:
apiKeyAndroid:(必须配置)用于Android号码认证时,传入阿里云SDK的秘钥。申请方法参考创建认证方案。
apiKeyIos:(必须配置)用于iOS号码认证时,传入阿里云SDK的秘钥。申请方法参考创建认证方案。
一键登录集成入口
oneKeyLogin({params}callback(ret, err))
timeout:
navHidden:
logBtnTextColor:
privacyColor:
switchAccText:
logoImage:
logBtnBackgroundImage:
privacyOne:
privacyTwo:
privacyTip:
ret:
{
resultCode: "600000", //字符串;参考阿里云号码认证服务返回码
token: "" //字符串,成功获取token的信息
}
err:
{
resultCode: “” //字符串;参考阿里云号码认证服务返回码
}
var aliPhoneAuth = api.require('aliPhoneAuth');
var params={
timeout: 5000,
navHidden: "true",
logBtnTextColor: "#ffffff",
privacyColor: "#e75555",
switchAccText: "其他登录方式",
logoImage: "widget/icon/icon150x150.png",
privacyOne: ["《用户协议》", "https://www.apicloud.com/"],
privacyTwo: ["《隐私政策》", "https://www.apicloud.com/"],
privacyTip: "请阅读并同意协议"
}
aliPhoneAuth.oneKeyLogin(params, function(ret, err){
if(ret.code=='600000'){//获取token成功
var token = ret.token;
aliPhoneAuth.quitLoginPage();//关闭一键登录页面
}else if(ret.code=='700000'){//点击返回,用户取消授权
}else if(ret.code=='700001'){//点击切换按钮,用户取消授权
}else{ //其他授权失败
}
});
android系统
可提供的1.0.9及更高版本
检查终端是否支持号码认证
var available = checkEnvAvailable()
available
类型:boolean
值 :true||false, SDK环境检查函数,检查终端是否支持号码认证。
//初始化
var aliPhoneAuth = api.require('aliPhoneAuth');
//检查环境
var ret = aliPhoneAuth.checkEnvAvailable();
if(!ret){
alert('环境不支持');
return;
}
Android系统
可提供的1.0.6及以下版本
修改一键登录授权页主题
var exeRes = setAuthUIConfig({'config':config})
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.6及以下版本
一键登录唤起授权页并获取token
getLoginToken({timeout:number}, callback(ret, err))
timeout:
ret:
{
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.6及以下版本
返回默认上网卡运营商
var name=getCurrentCarrierName()
无
name:
var aliPhoneAuth = api.require('aliPhoneAuth');
aliPhoneAuth.getCurrentCarrierName();//返回默认上网卡运营商
Android系统
可提供的1.0.6及以下版本
退出登录授权页
quitLoginPage()
无
var aliPhoneAuth = api.require('aliPhoneAuth');
aliPhoneAuth.quitLoginPage();//关闭一键登录页面
Android系统
可提供的1.0.0及更高版本
一键登录集成入口
oneKeyLogin({params}callback(ret, err))
timeout:
navIsHidden:
navColor:
title:
logoImage:
sloganText:
numberColor:
numberFont:
loginBtnText:
buttonColor:
changeBtnTitle:
privacyOne:
privacyTwo:
checkBoxIsHidden:
checkBoxIsChecked:
privacyPreText:
supportedInterfaceOrientations:
ret:
{
resultCode: "600000", //字符串;参考阿里云号码认证服务返回码
token: "" //字符串,成功获取token的信息
}
err:
{
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( callback(ret, err))
ret:
{
resultCode: "600000", //字符串;参考阿里云号码认证服务返回码
}
var aliPhoneAuth = api.require('aliPhoneAuth');
aliPhoneAuth.checkEnvAvailableWithComplete(function(ret, err){
alert(JSON.stringify(ret));
});
iOS系统
可提供的1.0.0及更高版本
调用取号接口,加速授权页的弹起
accelerateLoginPageWithTimeout({params}, callback(ret, err))
timeout:
ret:
{
resultCode: "600000", //字符串;参考阿里云号码认证服务返回码
}
var aliPhoneAuth = api.require('aliPhoneAuth');
aliPhoneAuth.accelerateLoginPageWithTimeout({
timeout: '5.0'
},function(ret, err){
alert(JSON.stringify(ret));
});
iOS系统
可提供的1.0.0及更高版本
一键登录获取token
getLoginTokenWithTimeout({params}, callback(ret, err))
timeout:
ret:
{
resultCode: "600000", //字符串;参考阿里云号码认证服务返回码
}
var aliPhoneAuth = api.require('aliPhoneAuth');
aliPhoneAuth.getLoginTokenWithTimeout({
timeout: 5.0
},function(ret, err){
alert(JSON.stringify(ret));
});
iOS系统
可提供的1.0.0及更高版本
一键登录注销登录页面
cancelLoginVCAnimated()
var aliPhoneAuth = api.require('aliPhoneAuth');
aliPhoneAuth.cancelLoginVCAnimated();
iOS系统