ACGeetest

立即使用

概述

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>

register

向SDK注册AppID

register({params})

params

appID:

  • 类型:字符串类型
  • 描述:通过后台注册获得,从极验后台获取该AppID

示例代码

var ACGeetest = api.require('ACGeetest');
ACGeetest.register({
  appID:''
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

requestToken

进行用户认证授权, 获取网关 token

requestToken({params},callback(ret))

注意:使用时可以先调用isPreGetTokenResultValidate方法返回为true时再调用该方法

params

styles:

  • 类型:JSON 对象
  • 描述:授权页面的样式设置
  • 内部字段:
{
   naviTitle: '', //(可选项)字符串类型;授权页导航的标题。默认为空字符串
   naviBgColor: '', //(可选项)字符串类型;授权页导航的背景颜色,支持#、rgb、rgba;默认:#fff
   appLogo: '', //(可选项)字符串类型;授权页面上展示的图标路径,支持fs、widget。默认为 "OneLogin" 图标。 注意:Android系统下不支持此字段,默认为uz_icon
}

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    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

关闭当前的授权页面

dismissAuth()

示例代码

var ACGeetest = api.require('ACGeetest');
ACGeetest. dismissAuth();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

renewPreGetToken

重新预取号

renewPreGetToken()

示例代码

var ACGeetest = api.require('ACGeetest');
ACGeetest. renewPreGetToken();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

isPreGetTokenResultValidate

判断预取号结果是否有效

isPreGetTokenResultValidate(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    isPreGet : true  //布尔类型;预取号结果是否有效
}

示例代码

var ACGeetest = api.require('ACGeetest');
ACGeetest.isPreGetTokenResultValidate(function(ret) {
    api.alert({ msg:JSON.stringify(ret)});
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

currentNetworkInfo

获取当前 OneLogin 可用的网络信息

currentNetworkInfo(callback(ret)) (仅IOS支持)

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    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

设置请求超时时长

setRequestTimeout({params})

params

time:

  • 类型:数字类型
  • 描述:(可选项)超时时长,单位秒
  • 默认:5

示例代码

var ACGeetest = api.require('ACGeetest');
ACGeetest.setRequestTimeout({
  time:5
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

isProtocolCheckboxChecked

服务条款左边复选框是否勾选

isProtocolCheckboxChecked(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    isCheck : true  //布尔类型;是否勾选
}

示例代码

var ACGeetest = api.require('ACGeetest');
ACGeetest.isProtocolCheckboxChecked(function(ret) {
    api.alert({ msg:JSON.stringify(ret)});
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

stopLoading

停止点击授权页面登录按钮之后的加载进度条

stopLoading()

示例代码

var ACGeetest = api.require('ACGeetest');
ACGeetest.stopLoading();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

initGOP

初始化本机号码认证

initGOP({params})

params

appID:

  • 类型:字符串类型
  • 描述:通过后台注册获得,从极验后台获取该AppID

time:

  • 类型:数字类型
  • 描述:(可选项)超时时长
  • 默认:5

示例代码

var ACGeetest = api.require('ACGeetest');
ACGeetest.initGOP({
  appID:'',
  time:5
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

verifyPhoneNumber

本机号码认证

verifyPhoneNumber({params})

params

phoneNumber:

  • 类型:字符串类型
  • 描述:需进行认证的手机号码

示例代码

var ACGeetest = api.require('ACGeetest');
ACGeetest.verifyPhoneNumber({
  phoneNumber:''
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setCachePhoneEnabled

设置是否允许缓存手机号,若允许缓存,则将校验过的手机号加密之后缓存到沙盒,缓存中仅存最近一次校验过的手机号

setCachePhoneEnabled({params})

params

enabled:

  • 类型:布尔类型
  • 描述:(可选性)是否允许缓存,true,允许缓存 ;false,禁止并清空缓存
  • 默认:true

示例代码

var ACGeetest = api.require('ACGeetest');
ACGeetest.setCachePhoneEnabled({
  enabled:true
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getCachedPhone

获取缓存的手机号

getCachedPhone(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    phoneNumber : ''  //字符串类型;缓存的手机号
}

示例代码

var ACGeetest = api.require('ACGeetest');
ACGeetest.getCachedPhone(function(ret) {
    api.alert({ msg:JSON.stringify(ret)});
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getCachedPhones

获取缓存的手机号列表

getCachedPhones(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    phones : []  //字符串数组;缓存的手机号列表
}

示例代码

var ACGeetest = api.require('ACGeetest');
ACGeetest.getCachedPhones(function(ret) {
    api.alert({ msg:JSON.stringify(ret)});
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

addGOPListener

添加本机号码认证监听

addGOPListener(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    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及更高版本