为帮助用户更好更快的使用插件,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。
本插件封装了创蓝闪验SDK,用于进行一键登录,本机号校验功能。
本机号码校验使用场景:
用户输入手机号码,通过SDK获取token,服务端携带输入的手机号码和token去运营商网关进行校验(服务端调用mobile-validate接口),返回的结果时用户当前上网使用的号码与输入的号码是否一致。
一键登录使用场景:
用户无需输入手机号码,SDK会拉起授权页,用户确认授权后,SDK会获取token,服务端携带token到运营商网关获取用户当前上网使用的号码(服务端调用mobile-query接口),并返回给APP服务端。
创建应用
应用的创建流程及APPID的获取,请查看「账号创建」文档
注意:如果应用有多个包名或签名不同的马甲包,须创建多个对应包名和签名的应用,否则马甲包将报包名或签名校验不通过。
快速体验示例Demo
注:需运行真机到真机,安装SIM卡,打开手机流量开关,允许网络权限
详细接入文档以官网为准
引用方式(Android&iOS)
var shanyan = api.require('clSDKShanYanSDKModule')
初始化方法
init({appid:'loXN4jDs'},function(ret,err))
appid:
ret:
{
code:"",//code为1022成功,其他失败
result:'',//返回信息
}
shanyan = api.require('clSDKShanYanSDKModule')
shanyan.init({appid:'loXN4jDs'},
function(ret, err){
api.alert({msg: JSON.stringify(ret)});
console.log("callback---button--shanyanSdkInit========"+ret.code+"result===="+ret.result);
});
ios系统,Android系统
可提供的1.0.0及更高版本
预取号方法
preLogin(function(ret, err){});
无
ret:
{
code:"",//code为1022成功,其他失败
result:'',//返回信息
}
shanyan.preLogin(function(ret, err){
api.alert({msg: JSON.stringify(ret)});
console.log("callback---button--shanyanSdkGetPhoneInfo========"+ret.code+"result===="+ret.result);
});
Android系统
可提供的1.0.0及更高版本
拉起授权页方法
openActivity(param,function(ret, err){})
isFinish:
ret:
{
type:"" //type=0时是拉起授权页回调;type=1时是一键登录回调
code:"",//code为1000成功,其他失败
result:"",//返回信息
}
var param = {isFinish:true};
shanyan.openActivity(param,function(ret, err){
//api.alert({msg: JSON.stringify(ret)});
console.log("fff"+JSON.stringify(ret));
});
字段 | 类型 | 含义 |
---|---|---|
isFinish | boolean | 点击授权页一键登录按钮有回调时是否自动销毁授权页: true:自动销毁 false:不自动销毁,开发者需主动调用销毁授权页方法进行授权页销毁操作 |
当type=0时是拉起授权页回调(ret.type):
字段 | 类型 | 含义 |
---|---|---|
code | int | code为1000:授权页成功拉起 其他:失败 |
result | String | 返回信息 |
当type=1时是一键登录回调(ret.type):
字段 | 类型 | 含义 |
---|---|---|
code | int | code为1011:点击返回按钮(包括物理返回键) code为1000:点击一键登录获取token成功 其他:点击一键登录获取token失败 |
result | String | 返回信息 |
当第二个回调外层code为1000时,result的返回为
{
"token": ""
}
含义如下:
字段 | 类型 | 含义 |
---|---|---|
token | String | 用来和后台置换手机号。一次有效。 |
Android系统
可提供的1.0.0及更高版本
销毁授权页方法
finishAuthActivity()
无
无
shanyan.finishAuthActivity();
A.授权页面自动销毁
1.在授权登录页面,当用户主动点击左左上角返回按钮时,返回码为1011,SDK将自动销毁授权页;
2.安卓 SDK,当用户点击手机的硬件返回键(相当于取消登录),返回码为1011,SDK将自动销毁授权页
3.当用户设置一键登录或者其他自定义控件为自动销毁时,得到回调后,授权页面会自动销毁
B.授权页手动销毁
1.当设置一键登录为手动销毁时,点击授权页一键登录按钮成功获取token不会自动销毁授权页,请务必在回调中处理完自己的逻辑后手动调用销毁授权页方法。
2.当设置自定义控件为手动销毁时,请务必在回调中处理完自己的逻辑后手动调用销毁授权页方法。
**
Android系统
可提供的1.0.0及更高版本
本机号校验方法
startAuthentication(function(ret, err){})
无
ret:
{
code:"",//code为2000成功,其他失败
result:'',//返回信息
}
当外层code为2000时,result的返回为
{
"token":""
}
shanyan.startAuthentication(function(ret,err){
console.log("fff"+JSON.stringify(ret));
});
Android系统
可提供的1.0.0及更高版本
ios预取号方法
preGetPhonenumber(callBack:function)
无
function(ret, err) {
//iOS回调
if (err != null) {
//失败
} else {
//成功
}
});
<script type="text/javascript" src="../script/apiutil.js"></script>
apiready = function() {
shanyan = api.require('clSDKShanYanSDKModule')
};
function preLogin() {
let platform = api.systemType;
if (platform == 'android') {
//安卓预取号
shanyan.preLogin(function(ret, err) {
api.toast({
msg: JSON.stringify(ret),
location: 'middle'
});
document.getElementById("codeid").innerHTML = "code:" + ret.code;
document.getElementById("resultId").innerHTML = "result:" + JSON.stringify(ret);
console.log("callback---button--shanyanSdkGetPhoneInfo========" + ret.code + "result====" + ret.result);
});
} else if (platform == 'ios') {
//iOS预取号
shanyan.preGetPhonenumber(
function(ret, err) {
if (err != null) {
//iOS预取号失败
} else {
//iOS预取号成功
}
api.toast({
msg: JSON.stringify(ret),
location: 'middle'
});
console.log("callback---button--shanyanSdkGetPhoneInfo========" + JSON.stringify(ret));
});
}
}
电信、联通、移动预取号 :初始化成功后,如果当前为电信/联通/移动,将调用预取号,可以提前获知当前用户的手机网络环境是否符合一键登录的使用条件,成功后将得到用于一键登录使用的临时凭证,默认的凭证有效期10min(电信)/30min(联通)/60min(移动)。
使用场景
iOS系统
可提供的1.0.0及更高版本
ios拉起授权页方法
quickAuthLoginWithConfigure(clUIConfigure)
clUIConfigure:
无
function openActivity() {
//调起授权页
shanyan.quickAuthLoginWithConfigure(this.ios_uiConfigure);
}
}
一键登录逻辑说明
ios系统
可提供的1.0.0及更高版本
销毁授权页方法
finishAuthControllerCompletion()
无
无
shanyan.finishAuthControllerCompletion();
A.授权页面自动销毁
1.在授权登录页面,当用户主动点击左左上角返回按钮时,返回码为1011,SDK将自动销毁授权页;
2.当用户设置一键登录或者其他自定义控件为自动销毁时,得到回调后,授权页面会自动销毁
B.授权页手动销毁
1.当设置一键登录为手动销毁时,点击授权页一键登录按钮成功获取token不会自动销毁授权页,请务必在回调中处理完自己的逻辑后手动调用销毁授权页方法。
2.当设置自定义控件为手动销毁时,请务必在回调中处理完自己的逻辑后手动调用销毁授权页方法。
ios系统
可提供的1.0.0及更高版本
本机号校验方法
startAuthentication(function(ret, err) {})
无
ret:
{
"message":"本机号校验获取联通token成功",
"data":
{
"token":"A2-7NA_jWQuN0XsJsZQOY8BtvdKtrhNK9QStebzzyzgh7ElebpB8xGy3rapp4yyxX8-VEVgMhiB3wO4P0PnCZNjtPAZO9KfeODdYxhgn5Qn8vnxOvgk4_Ov_39d56-v1p87-IcFHKlji4nhvCd1VmrxOSHx6KB6i6lZqFYqGgcbKfpG-yaGL6pcY4T9mbrtsOpbUhrdamE7eA1KaruyOdkL1SThGJZt_-8imf91EyrXckg="
},
"code":1000
}
function startAuthentication() {
api.showProgress();
setTimeout(function() {
api.hideProgress();
}, 5000);
shanyan.startAuthentication(function(ret, err) {
api.hideProgress();
let platform = api.systemType;
if (platform == 'android') {
if (ret.code == 1000) {
//成功
api.alert({
title: 'SDK获取Token成功',
msg: JSON.stringify(ret.result.token),
});
} else {
//失败
}
} else if (platform == 'ios') {
if (err != null) {
//iOS error存在即为失败
} else {
//成功
api.alert({
title: 'SDK获取Token成功',
msg: JSON.stringify(ret.data.token),
});
}
}
api.toast({
msg: JSON.stringify(ret),
location: 'middle'
});
console.log(JSON.stringify(ret));
});
}
ios系统