ACGeetest 封装了极验 SDK。
极验与三大运营商直接合作,利用应用层无法截取的网络层号码认证能力验证号码的真实性,无感本机认证是现有短信验证方式的优化,能消除现有短信验证模式等待时间长、操作繁琐、容易泄露等问题,帮助企业优化认证流程,助力拉新、留存、促活。。
目前运营商个别接口为 http 请求,对于全局禁用 http 的项目,需要设置 http 白名单,需要配置 Info.plist 文件。有关 Info.plist 文件的说明参考论坛。 配置示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSExceptionDomains</key>
<dict>
<key>wap.cmpassport.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>enrichgw.10010.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>id6.me</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>mdn.open.wo.cn</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>opencloud.wostore.cn</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>wostore.cn</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>zzx9.cn</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
</dict>
</plist>
向SDK注册AppID
register({params})
appID:
var ACGeetest = api.require('ACGeetest');
ACGeetest.register({
appID:''
});
iOS系统,Android系统
可提供的1.0.0及更高版本
进行用户认证授权, 获取网关 token
requestToken({params},callback(ret))
注意:使用时可以先调用isPreGetTokenResultValidate方法返回为true时再调用该方法
styles:
{
naviTitle: '', //(可选项)字符串类型;授权页导航的标题。默认为空字符串
naviBgColor: '', //(可选项)字符串类型;授权页导航的背景颜色,支持#、rgb、rgba;默认:#fff
appLogo: '', //(可选项)字符串类型;授权页面上展示的图标路径,支持fs、widget。默认为 "OneLogin" 图标。 注意:Android系统下不支持此字段,默认为uz_icon
}
ret:
{
eventType : 'init', //字符串类型;事件类型
// 取值范围
//auth : 授权
//loadingView : 授权页面,自定义加载进度条,点击登录按钮之后的回调
//stopLoadingView : 授权页面,停止自定义加载进度条,调用stopLoading之后的回调
//viewLifeCycle : 授权页面视图生命周期回调
//clickAuthButton : 点击授权页面授权按钮的回调,用于监听授权页面登录按钮的点击
//clickCheckbox : 点击授权页面隐私协议前勾选框的回调
//tapAuthBackground : 点击授权页面弹窗背景的回调
//clickSwitchButton : 点击授权页面切换账号按钮的回调
//carrierTermItem : 点击授权页面运营商隐私协议的回调
result:{}, //json对象,授权结果
viewLifeCycle:'', //字符串类型;授权页面视图生命周期;值为viewDidLoad、viewWillAppear、viewWillDisappear、viewDidAppear、viewDidDisappear
isChecked:true, //布尔类型;私协议前勾选框是否被勾选
item:{ //json对象,隐私条款内容
termTitle:'', //字符串类型;条款标题
termLink:'', //字符串类型;条款链接
index:0 //数字类型;条款索引,默认为0,当有多条条款时,会根据此属性升序排列条款
},
获取成功:
{
"model" : "iPhone9,1",
"authcode" : "0000",
"operatorType" : "CU",
"release" : "13.5.1",
"processID" : "967ceb230b3fdfb4d74ebcb470c5830c",
"appID" : "b41a959b5cac4dd1277183e074630945",
"pre_token_time" : "1012",
"token" : "CU__0__b41a959b5cac4dd1277183e074630945__2.3.8__1__f632d01ab7c64efda96580c3274de971__NOTCUCC",
"number" : "186****6173",
"preGetTokenSuccessedTime" : 1604890895.807291,
"errorCode" : "0",
"msg" : "获取accessCode成功",
"status" : 200,
"expire_time" : 580
}
获取失败:
{
"status" : 500,
"operatorType" : "CU",
"appID" : "b41a959b5cac4dd1277183e074630945",
"model" : "iPhone9,1",
"release" : "13.5.1",
"msg" : "Can't access cellular.",
"errorCode" : "-20202"
}
status - 200 表示获取预取号结果成功,500 表示获取预取号结果失败
token - 换取手机号需要的 token
processID - 流水号
appID - appId
authcode - authcode
operatorType - 运营商
errorCode - 获取失败时的错误码
msg - 获取失败时表示失败原因
}
var ACGeetest = api.require('ACGeetest');
ACGeetest.requestToken({
styles:{
naviTitle: '登录',
naviBgColor: '#ffffff',
appLogo: 'uz_icon1'
}
},function(ret, err) {
api.alert({ msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
关闭当前的授权页面
dismissAuth()
var ACGeetest = api.require('ACGeetest');
ACGeetest. dismissAuth();
iOS系统,Android系统
可提供的1.0.0及更高版本
重新预取号
renewPreGetToken()
var ACGeetest = api.require('ACGeetest');
ACGeetest. renewPreGetToken();
iOS系统,Android系统
可提供的1.0.0及更高版本
判断预取号结果是否有效
isPreGetTokenResultValidate(callback(ret))
ret:
{
isPreGet : true //布尔类型;预取号结果是否有效
}
var ACGeetest = api.require('ACGeetest');
ACGeetest.isPreGetTokenResultValidate(function(ret) {
api.alert({ msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
获取当前 OneLogin 可用的网络信息
currentNetworkInfo(callback(ret)) (仅IOS支持)
ret:
{
carrierName :'', //字符串类型;运营商名称;@"CM" 移动, @"CU" 联通, @"CT" 电信
carrierName :0, //数字类型;网络类型;0:网络类型未知,1:仅移动蜂窝数据网络,2:仅 WIFI 网络,3:移动蜂窝数据网络及 WIFI 网络
detailNetworkType :'' //字符串类型;具体的网络类型,如2G、3G、4G、WIFI
}
var ACGeetest = api.require('ACGeetest');
ACGeetest.currentNetworkInfo(function(ret) {
api.alert({ msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置请求超时时长
setRequestTimeout({params})
time:
var ACGeetest = api.require('ACGeetest');
ACGeetest.setRequestTimeout({
time:5
});
iOS系统,Android系统
可提供的1.0.0及更高版本
服务条款左边复选框是否勾选
isProtocolCheckboxChecked(callback(ret))
ret:
{
isCheck : true //布尔类型;是否勾选
}
var ACGeetest = api.require('ACGeetest');
ACGeetest.isProtocolCheckboxChecked(function(ret) {
api.alert({ msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
停止点击授权页面登录按钮之后的加载进度条
stopLoading()
var ACGeetest = api.require('ACGeetest');
ACGeetest.stopLoading();
iOS系统,Android系统
可提供的1.0.0及更高版本
初始化本机号码认证
initGOP({params})
appID:
time:
var ACGeetest = api.require('ACGeetest');
ACGeetest.initGOP({
appID:'',
time:5
});
iOS系统,Android系统
可提供的1.0.0及更高版本
本机号码认证
verifyPhoneNumber({params})
phoneNumber:
var ACGeetest = api.require('ACGeetest');
ACGeetest.verifyPhoneNumber({
phoneNumber:''
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置是否允许缓存手机号,若允许缓存,则将校验过的手机号加密之后缓存到沙盒,缓存中仅存最近一次校验过的手机号
setCachePhoneEnabled({params})
enabled:
var ACGeetest = api.require('ACGeetest');
ACGeetest.setCachePhoneEnabled({
enabled:true
});
iOS系统,Android系统
可提供的1.0.0及更高版本
获取缓存的手机号
getCachedPhone(callback(ret))
ret:
{
phoneNumber : '' //字符串类型;缓存的手机号
}
var ACGeetest = api.require('ACGeetest');
ACGeetest.getCachedPhone(function(ret) {
api.alert({ msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
获取缓存的手机号列表
getCachedPhones(callback(ret))
ret:
{
phones : [] //字符串数组;缓存的手机号列表
}
var ACGeetest = api.require('ACGeetest');
ACGeetest.getCachedPhones(function(ret) {
api.alert({ msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
添加本机号码认证监听
addGOPListener(callback(ret))
ret:
{
states : true, //布尔类型;是否成功
data:{} //json对象;
}
var ACGeetest = api.require('ACGeetest');
ACGeetest.addGOPListener(function(ret, err) {
api.alert({ msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本