android 验证 号码,本机号码校验

本机号码校验

接入前准备

请联系技术支持:文档中心右侧“技术咨询” 开通权限。

配置SDK

如果您已经接入了一键登录功能,那么可以跳过以下配置SDK步骤。

在接入本机号码校验之前,请先确认已经集成个验SDK。下文使用到的资源文件,均可在官网下载的SDK资源包中获得。调用一键认证接口前请先完成个验SDK的接入与初始化。

maven接入方式

dependencies {

compile 'com.getui:gysdk:1.6.0.0'

compile 'com.getui:gtc:2.1.0'

//一键登录扩展包

compile 'com.getui:elogin:1.1.0.0'

}

aar 包接入方式

(1)添加 aar包文件

将官网下载下来的 aar包 放置到项目的libs目录下

(2)配置 build.gradle

defaultConfig {

....

}

repositories {

flatDir {

dirs 'libs'

}

}

dependencies {

// 添加个验 aar 依赖,name与aar包的名字同步

compile(name: 'gysdk-1.6.0.0', ext: 'aar')

compile(name: 'gtc-2.1.0', ext: 'aar')

//添加一键登录扩展包

compile(name: 'elogin-1.1.0.0', ext: 'aar')

}

混淆配置

-dontwarn com.g.gysdk.**-keep class com.g.gysdk.**{*;}-dontwarn com.g.elogin.**-keep class com.g.elogin.**{*;}-dontwarn com.cmic.sso.sdk.**-keep class com.cmic.sso.sdk.** {*;}-dontwarn com.geetest.onelogin.**-keep class com.geetest.onelogin.** {*;}-dontwarn com.geetest.onepassv2.**-keep class com.geetest.onepassv2.** {*;}-dontwarn com.unicom.xiaowo.login.**-keep class com.unicom.xiaowo.login.** {*;}-dontwarn cn.com.chinatelecom.**-keep class cn.com.chinatelecom.** {*;}

接口列表

API 类名: com.g.gysdk.GYManager

方法

功能说明

getVerifyToken

【本机号码校验】获取本机号码校验通行证

verifyPhoneNumber

【本机号码校验】手机号码校验

cancelGetVerifyToken

【本机号码校验】关闭获取本机号码校验通行证

本机号码校验

整体流程

4d1ce9d504a7623adc43135a7c2da070.png

本机号码校验需要先获取通行证,然后再进行本机号码校验。

获取本机号码校验通行证

/**

* 获取本机号码校验通行证.

*

* @param phone 待校验手机号码.

* @param timeout 超时时间.

* @param gyCallBack 回调.

*/

public void getVerifyToken(String phone, int timeout, GyCallBack gyCallBack);

输入参数

参数名称

是否必填

类型

描述

phone

String

待校验手机号码

timeout

int

超时时间(建议8000ms-15000ms)

gyCallBack

GyCallBack

回调

调用示例

GYManager.getInstance().getVerifyToken(phone, 5000, new GyCallBack() {

@Override

public void onSuccess(final GYResponse response) {

try {

JSONObject jsonObject = new JSONObject(response.getMsg());

String accessCode = jsonObject.getString("accessCode");

String processId = jsonObject.getString("process_id");

int operatorType = jsonObject.getInt("operatorType");

String phone = jsonObject.getString("phone");

} catch (Throwable t) {

t.printStackTrace();

}

}

@Override

public void onFailed(GYResponse response) {

Log.d("onFailed", "response:" + response);

showToast(response.toString());

}

});

返回示例

通过GyCallBack返回结果.

GyCallBack:

public interface GyCallBack {

/**

* description:获取成功.

*/

void onSuccess(GYResponse response);

/**

* description:获取失败.

*/

void onFailed(GYResponse response);

}

GYResponse返回示例:

//获取成功

{

gyuid='cd529bfde4c641d0bc42257e2ed7300131',

success=true,

code=30000,

msg='{"process_id":"c9c27556b973d4b9c1f952795f02a2ef","accessCode":"nm360b88d6e1a64ac4b4d7e70776a35b2e","phone":"17768345313","operatorType":4}'

}

//获取失败

{

gyuid='8f41f31b0e7a43e6bbb4d1e6da77489b62',

success=false,

code=30007,

msg='{"msg":1,"process_id":"9dfbfce85f8214af57be674d2b1069b8","operatorType":"CU","clienttype":"1","errorCode":"-20205","metadata":{"resultCode":1,"resultMsg":"请求sdk超时","resultData":"","traceId":""}}'

}类 GYResponse 属性详细说明:

属性

类型

属性说明

gyuid

String

个验用户唯一标识

success

boolean

是否获取成功

code

int

状态码,30000表示获取成功

msg

String

获取成功的时候,包含accessCode信息,验证失败的时候,为失败详细信息

GYResponse中msg详细信息解释:

预登录成功时msg:

字段

必须

类型

解释

process_id

String

流水号

accessCode

String

运营商返回的accessCode

phone

String

发往运营商的手机号

operatorType

int

运营商验证类型,下一步校验手机号需要用到该参数

预登录失败时msg:

当code为30007时,msg是具体的错误信息JSON字符串。其他情况为code的简单说明,例如网络异常。以下是code为30007时msg的详细说明:

字段

必须

类型

解释

errorCode

String

错误码

msg

String

运营商返回的状态信息

process_id

String

流水号

metadata

JSONObject

具体的错误原因

operatorType

String

客户端获取的运营商

clienttype

String

客户端,1表示Android

本机号码校验接口

/**

*验证本机号码.

** @param accessCode 本机号码校验通行证.

*@param processId processId.

*@param phone 待校验号码.

*@param operatorType 运营商验证类型.

*@param gyCallBack 回调.

*/

public void verifyPhoneNumber(String accessCode, String processId, String phone, int operatorType, GyCallBack gyCallBack);

我们还提供了服务端的本机号码校验接口,如果开发者有这方面的需求,请参考服务端的文档。

输入参数

参数名称

是否必填

类型

描述

accessCode

String

本机号码校验通行证

processId

String

流水号

phone

String

待验证号码

operatorType

int

运营商验证类型,由获取本机号码校验通行证接口返回

gyCallBack

GyCallBack

回调

调用示例

GYManager.getInstance().verifyPhoneNumber(accessCode, processId, phone, operatorType, new GyCallBack() {

@Override

public void onSuccess(GYResponse response) {

showToast("校验成功");

}

@Override

public void onFailed(GYResponse response) {

showToast("校验失败:" + response.getMsg());

}

});

返回示例

通过GyCallBack返回结果.

GyCallBack:

public interface GyCallBack {

/**

* description:验证成功.

*/

void onSuccess(GYResponse response);

/**

* description:验证失败.

*/

void onFailed(GYResponse response);

}

GYResponse返回示例:

{

gyuid='cd529bfde4c641d0bc42257e2ed7300131',

success=true,

code=30000,

msg='成功'

}类 GYResponse 属性详细说明:

属性

类型

属性说明

gyuid

String

个验用户唯一标识

success

boolean

是否获取成功

code

int

状态码,30000表示验证成功

msg

String

返回码说明

关闭获取本机号码校验通行证

/**

* 关闭获取本机号码校验通行证.

*/

public void cancelGetVerifyToken();

状态码

SDK返回码

状态码

含义

30000

操作成功

30001

当前网络环境不适合执行该操作

30004

其他错误

30005

预登录失败

30006

一键登录失败

30007

获取本机号码校验token失败

40047

一键登录取号失败

40053

手机号校验失败

错误码

errorCode

Description

-20100

手机号未传

-20101

app_id未传

-20104

没有预取号就进行取号

-20200

当前网络不可用

-20201

当前手机没有电话卡

-20202

当前没有开启流量

-20203

未获取到运营商

-20204

获取运营商错误

-20205

预取号超时

-20206

没有预取号成功就进行取号

-20207

WIFI下请求切换网络失败

-20301

退出取号页面

-20302

按返回键退出取号页面

-20303

切换账号登陆方式

-20304

授权页面加载异常

-30200

SDK内部请求PreGateWay接口超时

-40101

移动运营商预取号失败

-40102

移动运营商取号失败

-40104

移动不支持的网络制式

-40201

联通运营商预取号失败

-40202

联通运营商取号失败

-40204

联通不支持的网络制式(不支持2G)

-40301

电信运营商预取号失败

-40302

电信运营商取号失败

-40305

电信不支持的网络制式(不支持2G, 3G)

-50100

服务接口返回异常

-50101

服务接口解密失败

-50102

服务接口返回错误

其余情况请参考状态码汇总说明

常见问题

建议开发者在开发期间开启debug模式,通过查看debug日志,可以更好的排查问题。

//在初始化之前调用

GYManager.getInstance().setDebug(true);

一键登录和本机号码校验支持哪些运营商和网络环境

目前支持移动 2G、3G、4G、5G,联通 3G、4G、5G,电信 4G、5G

是否支持双卡手机

支持,双卡手机以开启数据流量的 SIM 卡进行认证。

WIFI环境下能否验证

在数据网络开通的前提下,WiFi 环境中会强制使用数据网络触发网关请求,请求仅为几K,可正常校验。

是否支持携号转网用户

SDK 不提供接口判断用户是否为携号转网用户,但可以判断用户流量卡当前的运营商。即携号转网用户可正常使用。

是否支持虚拟运营商

仅支持三大运营商(移动、联通、电信)的手机号进行一键登录。

是否支持流量卡

三大运营商(移动、联通、电信)的卡,能够正常使用数据网络,运营商通过网关能够正常取号,均会被作为正常的卡来判断。

是否支持分屏显示

目前一键认证不支持分屏幕显示。

部分OPPO手机上预登录失败

部分OPPO手机上新安装APP默认只有wifi网络权限,默认没有给予访问移动数据流量的权限。需要用户在设置中手动授予权限。开发者可以引导用户开启,有以下两种方案:

引导手动设置权限:设置->双卡与移动网络->使用WLAN与移动网络的应用->找到需要设置的APP->设置WLAN与移动数据即可

关闭WIFI,操作应用,会弹出使用移动网络提醒,点击设为允许,即可正常使用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值