概述

本文是极验无感本机认证产品的服务端API接口说明,供开发者做接入使用。无感本机认证包含OneLogin(一键登录)和OnePass(本机号码认证)两个能力。

如APP使用SDK一键登录功能,则服务端相应对接OneLogin(一键登录)接口即可。

如APP使用SDK本机号码认证功能,则服务端相应对接OnePass(本机号码认证)接口即可。

OneLogin(一键登录)

1、 接口地址和说明

请求URL:
https://onelogin.geetest.com/check_phone

请求方式:

  • POST

数据类型:
application/json

2、 接口请求参数

请求参数:

参数名 必选 类型 说明
process_id str SDK返回的流水号,一次有效
sign str 用户签名,用于账号校验
生成方式:
1.将app_id, 以及当前时间戳(毫秒为单位)通过”&&”连接。(app_id + ‘&&’ + timestamp)
2.使用app_key进行hmac-sha256签名。将结果转换为16进制。
token str SDK返回的运营商Token
is_phone_encode bool 返回手机号是否加密,默认不加密,加密传输情况加密方式为AES
timestamp str 当前时间(单位为毫秒),sign加密所使用的当前时间戳与其相同
authcode str 电信新版本接口校验码,仅电信手机号需此入参
注:authcode为新增参数,sdk为安卓 0.8.0/IOS 1.8.0及以上版本时,服务端均需传此参数

请求示例:

curl -H "Content-Type: application/json" -d '{"token": "客户端返回用于获取结果的token", "sign": "生成的用户签名", "process_id": "客户端返回的流水号", "authcode": "客户端返回的电信校验码", "is_phone_encode": true, "timestamp": "当前时间"}' https://onelogin.geetest.com/check_phone

3、 接口返回参数

返回参数说明:

参数名 类型 说明 是否必返回
status int 状态码 true
result str 请求成功时,返回手机号,失败时为”” true
error_msg str 请求失败时,返回对应状态码的描述 true
risk_code list 风险码(可能会有多个) false
risk_level int 风险等级(只返回最高风险等级) false
finger_print str 对应的设备的指纹 false

注:集成2.0.0及以上版本SDK,且接入设备指纹功能,在成功获得手机号情况下会同时返回 risk_code/ risk_level/ finger_print参数

风险等级说明:

字段名 等级 说明
risk_level 0 未发现风险,正常用户
risk_level 3 风险较低
risk_level 7 有较高的风险
risk_level 9 高风险,确定是风险用户

风险码说明:

风险码 风险等级 原因
2002 3/7/9 ip击中攻击数据库,威胁等级依据IP本身攻击行为的程度
4001 7 模拟器操作
4003 7 安卓端对设备有改机操作或者安装了改机软件
4004 3 设备越狱或者root
4005 3 设备安装了多开工具或者类似多开类应用
4006 7 设备处于正在被调试状态

状态码:

状态码 描述
200 请求成功
500 从运营商获取结果失败
12000 process_id为空
12001 token为空
12002 sign为空
12003 process_id不为32位
12004 错误is_phone_encode类型
12005 时间戳不正确
12100 process_id不存在
12101 process_id已使用过
12102 未查询到对应的app_id
12103 查询到对应的app_id不正确
12104 余额不足
12109 sign错误
12200 token失效

OnePass(本机号码认证)

1、 接口地址及说明

请求URL:

  • https://onepass.geetest.com/v2.0/check_gateway

请求方式:

  • POST

数据类型:
application/json

2、 接口请求参数

请求参数:

参数名 必选 类型 说明
process_id string SDK返回的流水号,一次有效
sign string 用户签名,用于账号校验
生成方式:
1.将app_id, 以及当前时间戳(毫秒为单位)通过”&&”连接。(app_id + ‘&&’ + timestamp)
2.使用app_key进行hmac-sha256签名。将结果转换为16进制。
accesscode string SDK返回的运营商accesscode
phone string C端用户手机号, 11位手机号
timestamp string 当前时间(单位为毫秒),sign加密所使用的当前时间戳与其相同

请求示例

curl -H "Content-Type: application/json"  -d '{"phone": "手机号", "accesscode": "客户端返回用于获取结果的token", "sign": "生成的用户签名", "process_id": "客户端返回的流水号","timestamp": "当前时间"}' https://onepass.geetest.com/v2.0/check_gateway

3、 接口返回参数

返回参数说明:

参数名 类型 说明
status int 状态码,200为成功,具体信息见状态码表
result string 请求成功时,表示校验结果,”0” 表示匹配,页面输入的手机号与当前流量卡号一致;”1” 表示不匹配,页面输入的手机号与当前流量卡号不一致
error_msg string 请求失败时,返回对应状态码的描述

状态码:

状态码 描述
200 请求成功
500 从运营商获取结果失败
2000 process_id为空
2001 sign为空
2002 accesscode为空
2003 phone为空
2004 process_id不合法(32位)
2005 错误的timestamp
2104 sign错误
3101 未查询到对应的app_id
3102 未查询到对应的process_id
3105 流水号已经被使用过
3200 token失效

Sign生成和手机号加密说明

1、 Sign生成方式说明

1.将app_id, 以及当前时间戳(毫秒为单位)通过”&&”连接。(app_id + ‘&&’ + timestamp)

2.使用app_key进行hmac-sha256签名。将结果转换为16进制。

注:app_id、app_key在极验后台查看,服务端使用的app_id必须与客户端使用的相对应

示例:

app_id: ‘zoekwui1hnmg49x5fwzf5la0ml5dziwn’
app_key: ‘gywzffojtnzl0vd6kcut8fcgyud5wg49’
时间戳: ‘1542355862990’

签名结果为:

6ef12cd35800607896a0e82b2a53955d679f97ff63e2a17954ddfbd3f7647501

demo下载:

Java, Python, JS, PHP

2、 手机号加密方式说明

直接对手机号使用AES(密钥app_key)加密,结果转换为16进制。

示例:

手机号:13333333333

app_key: ‘gywzffojtnzl0vd6kcut8fcgyud5wg49’

加密结果:’be28dea08ee543320b1ef9e1bceb51e4’

demo下载:

Java, Python, JS, PHP