云验证

云验证

前言

进行云验证接入前请先完成SDK的接入与初始化

功能说明

云验证服务基于个验认证技术帮助APP实现本机号码校验,验证用户号码真实性,省去短信验证码环节,提升用户体验。适用于注册、登录、修改密码等场景。也可用于风控场景。云验证提供3种验证模式。

  • 云验证模式

    云验证用于校验用户输入的号码是否为当前手机使用,比较适合风控场景。

  • 短信验证模式

    短信模式指所有验证都使用短信验证码进行校验。

  • 【推荐】云短信验证模式

    云短信模式在云验证失败时会自动发送短信验证码。适合登录、注册、修改密码等场景。

云短信模式流程图

png

前期准备

1、提供短信模板数据

短信模板说明

使用云短信验证模式或者短信验证模式时,因为需要发送短信,需要提前配置好短信模板,去运营商那边的报备,运营商审核时间一般为1-2个工作日。

例子:

模板ID 场景说明 短信内容
00001 登录场景 【个验】登录验证码:4799,验证码将于5分钟后失效,若非您本人操作请忽略。
00002 注册场景 【个验】注册验证码:8953,验证码将于4分钟后失效,快快去验证吧。

开发者中心配置短信模板

短信模板可在开发者中心进行配置,可配置验证码失效时间。具体操作可参考下图

png

接口列表

API 类名: com.getui.gysdk.GYManager

方法 功能说明
verify 个验云验证接口
smsCodeVerify 短信验证码校验接口

1、云验证接口 verify

接口说明

/**
 * 云验证接口.
 *
 * @param phoneMd5      手机号md5值,32位小写.
 * @param verifyType    验证方式,CLOUD,SMS,CLOUDSMS,NONSENCE.
 * @param smsTemplateId 自定义短信模板 id.
 * @param callBack      回调.
 */
public void verify(String phoneMd5, VerifyType verifyType, String smsTemplateId, CloudVerifyCallBack callBack)

输入参数

参数名称 是否必填 类型 描述
phoneMd5 必填 String 手机号md5值,32位小写
type 必填 String VerifyType.CLOUDSMS(云短信模式),
VerifyType.CLOUD(云验证模式),
VerifyType.SMS(短信验证模式)
smsTemplateId 可选 String 云短信验证与短信验证时需要填
callBack 可选 CloudVerifyCallBack 回调

调用示例

//回调
CloudVerifyCallBack callBack = new CloudVerifyCallBack() {

        //发送验证码
        @Override
        public void onSendVerifyCode(final GYResponse response) {
            Log.d(TAG, "发送验证码:" + response);
        }

        //获取到验证码
        @Override
        public void onFetchVerifyCodeSuccess(GYResponse response) {
            Log.d(TAG, "获取验证码:" + response);
        }

        //验证成功
        @Override
        public void onSuccess(final GYResponse response) {
            Log.d(TAG, "验证成功:" + response);
        }

        //验证失败
        @Override
        public void onFailed(final GYResponse response) {
            Log.d(TAG, "验证失败:" + response);
        }
    };

// cloudsms
GYManager.getInstance().verify(pnMD5, GYManager.VerifyType.CLOUDSMS,"短信模板 id",callBack);

// cloud , 该模式无需配置短信模板 id
GYManager.getInstance().verify(pnMD5, GYManager.VerifyType.CLOUD,"",callBack);

// sms
GYManager.getInstance().verify(pnMD5, GYManager.VerifyType.SMS,"短信模板 id",callBack);

返回示例

云验证会在通过CloudVerifyCallBack返回结果.

CloudVerifyCallBack:

public interface CloudVerifyCallBack extends GyCallBack {

    /**
     * description:发送验证码.
     */

    void onSendVerifyCode(GYResponse response);

    /**
     * description:获取验证码.
     */

    void onFetchVerifyCodeSuccess(GYResponse response);

    /**
     * description:验证成功.
     */    
    void onSuccess(GYResponse response);

    /**
     * description:验证失败.
     */
    void onFailed(GYResponse response);

}  

GYResponse示例:

{
 gyuid='3801aad30a7f4a8c94685cb237b0953b62',
 reqId='GY-20180918-1-omsG91sfte8LUteahzOh06',
 success=false,
 code=90001, 
 msg='云验证失败',
 validate='null'
 }


如果是云短信验证,云验证失败后发送短信,会在 CloudVerifyCallBack.onSendVerifyCodeonSendVerifyCode(GYResponse response)中返回结果:

{
 gyuid='3801aad30a7f4a8c94685cb237b0953b62', 
 reqId='GY-20180918-0-jGCBlDQqr37nq8nFqTpQ', 
 success=true, 
 code=20002,
 msg='云验证失败,短信验证码发送成功', 
 validate='null'
}


发送短信后,SDK会尝试接收短信并解析出验证码,然后通过CloudVerifyCallBack.onFetchVerifyCodeSuccess(GYResponse response)返回结果给开发者。SDK中申明了读取短信的权限。如果开发者不需要这项功能,则可以通过在AndroidManifest文件添加以下代码来移除权限申明。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    //移除权限申明
    <uses-permission
        android:name="android.permission.RECEIVE_SMS"
        tools:node="remove" />
    <uses-permission
        android:name="android.permission.READ_SMS"
        tools:node="remove" />

    ....

2、短信验证码校验:smsCodeVerify

接口说明

/**
 * 短信验证码校验.
 *
 * @param phoneMd5 手机号md5值,32位.
 * @param code sms验证码.
 * @param callBack 回调
 */
public void smsCodeVerify(String phoneMd5, String code, GyCallBack callBack)

输入参数

参数名称 是否必填 类型 描述
phoneMd5 必填 String 手机号md5值,32位小写
code 必填 String 用户填写的短信验证码
callBack 可选 GyCallBack 回调

返回示例

短信校验会在通过GyCallBack返回结果.

GyCallBack:

public interface GyCallBack {

    /**
     * description:验证成功.
     */
    void onSuccess(GYResponse response);

    /**
     * description:验证失败.
     */
    void onFailed(GYResponse response);

}

GYResponse示例:

{
gyuid='3801aad30a7f4a8c94685cb237b0953b62',
reqId='GY-20180918-0-GWkOPPUeAf6GqZ9y1vbM08', 
success=true,
code=20003,
msg='验证码校验成功',
validate='null'
}


  • 类 GYResponse 属性详细说明:
属性 类型 属性说明
success boolean 验证是否成功
code int 状态码
msg String 状态描述信息
gyuid String 个验用户唯一标识
reqId String 调用验证接口和短信验证接口时返回的请求唯一id,错误不返回

状态码

请参考状态码汇总说明

常见问题

华为

  • 华为手机出现 SDK 自动获取验证码失败情况,请尝试以下操作

png

小米

  • 小米手机 V8 以上暂时不支持自动获取验证码。

文档中心搜索