一键认证

一键认证

能力简述

一键认证:一键认证方案,运营商利用其移动数据网络,采用“通信网关取号”及 SIM卡识别等技术,准确验证用户本机号码,实现一键认证,并可有效规避短信验证码泄露风险。 通过运营商网关认证能力,用户无需输入手机号码和短信验证码,即可使用手机号一键认证成功。

使用限制说明:一键认证功能的使用前提是用户打开蜂窝网络,目前支持的网络制式有移动 2G、3G、4G,联通 3G、4G,电信 4G。对于双卡手机,以开启数据流量的 SIM 卡进行认证;对于Wifi环境,在数据网络开通的前提下,会强制使用数据网络触发网关请求,请求仅为几K,可正常校验。 另外,一键认证当前不支持分屏显示,建议此功能不要应用在分屏显示场景下。

接入前准备

请联系QQ:3007288195 开通权限。

业务流程

成功对接效果图:

配置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')
    }

配置授权页activity

AndroidManifest文件中配置以下activity。

        <activity
             android:name="com.g.gysdk.view.ELoginActivity"
             android:configChanges="orientation|keyboardHidden|screenSize"
             android:launchMode="singleTop"
             android:screenOrientation="behind" />
         <activity
             android:name="com.g.gysdk.view.ELoginWebActivity"
             android:configChanges="orientation|keyboardHidden|screenSize"
             android:launchMode="singleTop"
             android:screenOrientation="behind" />
         <activity
             android:name="com.geetest.onelogin.activity.OneLoginActivity"
             android:configChanges="orientation|keyboardHidden|screenSize"
             android:launchMode="singleTop"
             android:screenOrientation="behind" />
         <activity
             android:name="com.geetest.onelogin.activity.OneLoginWebActivity"
             android:configChanges="orientation|keyboardHidden|screenSize"
             android:launchMode="singleTop"
             android:screenOrientation="behind" />

混淆配置

-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

方法 功能说明
ePreLogin 【一键登录】预登录
isPreLoginResultValid 【一键登录】检查预登录结果是否有效
eAccountLogin 【一键登录】一键登录
addRegisterViewConfig 【一键登录】添加自定义控件
setAuthPageListener 【一键登录】设置一键登录界面回调
finishAuthActivity 【一键登录】关闭一键登录界面
stopLoading 【一键登录】关闭一键登录页面的loading
cancelELogin 【一键登录】关闭一键登录

预登录

    /**
     * 预登录.
     *
     * @param timeOut    超时时间.
     * @param gyCallBack 回调.
     */
    public void ePreLogin(int timeOut, GyCallBack gyCallBack);

注意:

  • 在调用一键登录接口之前,必须先预登录,预登录成功之后才可以一键登录。预登录是一个耗时操作,我们建议开发者提前进行预登录,例如在闪屏页面或者其他任何地方,这样可以在调用一键登录的时候节省用户等待的时间。
  • 预登录的结果在一定时间内有效,具体的有效期会在预登录成功的结果里面返回。其中电信和移动的预登录结果在有效期内只能使用一次,联通的可以使用多次。SDK提供了isPreLoginResultValid接口来帮助开发者判断当前的预登录结果是否有效.
  • 预登录成功表示当前设备可以使用一键登录,失败则表示不可用,开发者在失败的时候可以换成其他登录方式。

输入参数

参数名称 是否必填 类型 描述
timeOut int 超时时间(1000ms-15000ms)
gyCallBack GyCallBack 回调

调用示例

 GYManager.getInstance().ePreLogin(5000, new GyCallBack() {
            @Override
            public void onSuccess(GYResponse response) {
                showToast("预登录成功");
                Log.d(TAG, "response:" + response);
            }

            @Override
            public void onFailed(GYResponse response) {
                showToast("预登录失败:" + response);
            }
        });

返回示例

预登录会通过GyCallBack返回结果.

GyCallBack:

public interface GyCallBack {

    /**
     * description:预登录成功.
     */
    void onSuccess(GYResponse response);

    /**
     * description:预登录失败.
     */
    void onFailed(GYResponse response);

}

GYResponse返回示例:

预登录成功:
{
    gyuid='1f4b078f06ad4867b641f1976a172f1232', 
    success=true,
    code=30000,
    msg='{"msg":"103000","process_id":"bd9304d883149fd24e345ee9b1deb86f","operatorType":"CM","clienttype":1,"accessCode":"","number":"187****7325","expireTime":1574235119343}'
}
预登录失败:
{
    gyuid='1f4b078f06ad4867b641f1976a172f1232', 
    success=false, 
    code=30005, 
    msg='{"errorCode":"-40301","process_id":"6684c251a45717e57105af385649d5f4","metadata":{"msg":"timestamp-out-of-date","result":-10009},"operatorType":"CT","clienttype":"1","msg":"-10009"}',
}
  • 类 GYResponse 属性详细说明:
属性 类型 属性说明
gyuid String 个验用户唯一标识
success boolean 预登录是否成功
code int 状态码,30000表示预登录成功
msg String 详细信息
  • GYResponse中msg详细信息解释:

预登录成功时msg:

属性 必须 类型 解释
msg String 运营商返回的状态信息
process_id String 流水号
operatorType String 客户端获取的运营商(CT表示电信、CU表示联通、CM表示移动)
clienttype String 客户端,1表示Android
accessCode String 运营商返回的accessCode
number String 运营商返回的去敏手机号
expireTime long 预取号结果的有效期

预登录失败时msg:
当code码为30005的时候,msg是一个包含预登录失败具体信息的JSON字符串。其余的情况msg为code码的简单说明,例如网络异常。以下是code为30005的时候,msg中具体信息说明:

字段 必须 类型 解释
errorCode String 错误码(错误码类型请查看下文的错误码表)
msg String 运营商返回的状态信息
process_id String 流水号
metadata JSONObject 具体的错误原因
operatorType String 客户端获取的运营商(CT表示电信、CU表示联通、CM表示移动)
clienttype String 客户端,1表示Android

当前版本预登录返回的信息仅作为状态记录或者异常排查,不能用于其他接口,例如服务端取号或者号码验证。

判断预登录结果是否可用

    /**
     * 判断预登录结果是否可用,返回true则表示可用.
     */
    public boolean isPreLoginResultValid();

调用示例

        //检查预登录是否有效 有效则直接登录  无效则需要先进行预登录
        if (GYManager.getInstance().isPreLoginResultValid()) {
            //可以直接调用一键登录
            ...
        } else {
              //需要先调用预登录
            ...
        }

一键登录


    /**
     * 一键登录.
     *
     * @param config   界面配置参数.
     * @param callBack 一键登录回调.
     */
    public void eAccountLogin(ELoginThemeConfig config, GyCallBack callBack);   

输入参数

参数名称 是否必填 类型 描述
config ELoginThemeConfig 界面配置参数
callBack GyCallBack 回调

ELoginThemeConfig说明

创建示例
ELoginThemeConfig.Builder builder = new ELoginThemeConfig.Builder();
        //设置背景
builder.setAuthBGImgPath("login_bg")
        //设置状态栏颜色 字体颜色
       .setStatusBar(Color.WHITE, Color.WHITE, true)
       //设置标题栏布局
       .setAuthNavLayout(Color.WHITE, 49, true, false)
       ...

return builder.build();

方法说明
setAuthBGImgPath(String authBGImgPath)

设置背景图⽚

参数说明
参数 参数类型 说明 默认值
authBGImgPath String 设置背景图⽚。放在drawable文件下,以下背景图片,路径与之保持一致 gt_one_login_bg
setDialogTheme(boolean isDialogTheme, int dialogWidth, int dialogHeight, int dialogX, int dialogY, boolean isDialogBottom, boolean isWebViewDialogTheme)

设置弹窗主题相关

参数说明
参数 参数类型 说明 默认值
isDialogTheme boolean 是否使用弹窗模式,true为使用,false为不使用 false
dialogWidth int 弹窗模式宽度,长宽的单位都为dp,以下单位与之保持一致 300
dialogHeight int 弹窗模式高度 500
dialogX int 授权⻚弹窗X偏移量(以屏幕⼼为原点) 0
dialogY int 授权⻚弹窗Y偏移量(以屏幕⼼为原点) 0
isDialogBottom boolean 授权⻚弹窗是否贴于屏幕底部true:显示到屏幕底部, dialogY参数设置将⽆效 false:不显示到屏幕底部,以 dialogY参数为准 false
isWebViewDialogTheme boolean 隐私页面是否使用弹窗模式 false
setStatusBar(int statusBarColor,int navigationBarColor,boolean isLightColor)

设置状态栏颜色、字体颜色。

参数说明
参数 参数类型 说明 默认值
statusBarColor int 自定义状态栏背景颜色 0
navigationBarColor int 自定义底部导航栏背景颜色 0
isLightColor boolean 设置状态栏内容的颜色(只能黑白),true为黑色,false为白色 false
setAuthNavLayout(int navColor, int authNavHeight, boolean authNavTransparent, boolean authNavGone)

设置标题栏布局

参数说明
参数 参数类型 说明 默认值
navColor int 标题栏颜色 0xFF3973FF
authNavHeight int 标题栏高度 49
authNavTransparent boolean 标题栏是否透明 true
authNavGone boolean 标题栏是否隐藏,此处的隐藏为View.GONE false
setAuthNavTextView(String navText, int navTextColor, int navTextSize, boolean navTextNormal, String navWebViewText, int navWebViewTextColor, int navWebViewTextSize)

设置标题栏中间文字相关

参数说明
参数 参数类型 说明 默认值
navText String 文字设置 一键登录
navTextColor int 字体颜色 0xFFFFFFFF
navTextSize int 字体大小,单位为sp,以下设置字体大小的单位与之保持一致 17
navTextNormal boolean 设置是否隐私条款页面的标题栏中间文字使用默认值,true为使用navWebViewText,false为使用默认隐私条款的名字 false
navWebViewText String 隐私条款页面的标题栏中间文字 服务条款
navWebViewTextColor int 隐私条款页面的标题栏中间文字颜色 0xFF000000
navWebViewTextSize int 隐私条款页面的标题栏中间文字大小 17
setAuthNavTextViewTypeface(Typeface navTextTypeface,Typeface navWebViewTextTypeface)

设置标题栏中间文字的字体相关

参数说明
参数 参数类型 说明 默认值
navTextTypeface Typeface 标题栏的文字的字体 Typeface.DEFAULT
navWebViewTextTypeface Typeface 条款页面标题栏的文字的字体 Typeface.DEFAULT
setAuthNavReturnImgView(String navReturnImgPath, int returnImgWidth, int returnImgHeight, boolean navReturnImgHidden, int returnImgOffsetX)

设置标题栏返回按钮相关

参数说明
参数 参数类型 说明 默认值
navReturnImgPath String 返回按钮图片 gt_one_login_ic_chevron_left_black
returnImgWidth int 返回按钮图片宽度 24
returnImgHeight int 返回按钮图片高度 24
navReturnImgHidden boolean 返回按钮是否隐藏 false
returnImgOffsetX int 返回按钮图片距离屏幕左边X轴偏移量 12
setLogoImgView(String logoImgPath, int logoWidth, int logoHeight, boolean logoHidden, int logoOffsetY, int logoOffsetY_B, int logoOffsetX)

设置logo相关

参数说明
参数 参数类型 说明 默认值
logoImgPath String logo图片 gt_one_login_logo
logoWidth int logo图片宽度 71
logoHeight int logo图片高度 71
logoHidden boolean logo是否隐藏 false
logoOffsetY int logo相对于状态栏下边缘y偏移 125
logoOffsetY_B int logo相对于底部y偏移 0
logoOffsetX int logo相对于屏幕左边X轴偏移量,当为0时表示居中显示 0
setNumberView(int numberColor, int numberSize, int numFieldOffsetY, int numFieldOffsetY_B, int numFieldOffsetX)

设置号码相关

参数说明
参数 参数类型 说明 默认值
numberColor int 号码栏字体颜色 0xFF3D424C
numberSize int 号码栏字体大小 24
numFieldOffsetY int 号码栏相对于标题栏下边缘y偏移 200
numFieldOffsetY_B int 号码栏相对于底部y偏移 0
numFieldOffsetX int 号码栏相对于屏幕左边X轴偏移量,当为0时表示居中显示 0
setNumberViewTypeface(Typeface numberViewTypeface)

设置号码栏字体相关

参数说明
参数 参数类型 说明 默认值
numberViewTypeface Typeface 号码栏的文字的字体 Typeface.DEFAULT
setSwitchView(String switchText, int switchColor, int switchSize, boolean switchAccHidden, int switchAccOffsetY, int switchOffsetY_B, int switchOffsetX)

设置切换账号相关

参数说明
参数 参数类型 说明 默认值
switchText int 切换账号文字 切换账号
switchColor String 切换账号字体颜色 0xFF3973FF
switchSize int 切换账号字体大小 14
switchAccHidden boolean 切换账号是否隐藏 false
switchAccOffsetY int 切换账号相对于标题栏下边缘y偏移 249
switchOffsetY_B int 切换账号相对于底部y偏移 0
switchOffsetX int 切换账号相对于屏幕左边X轴偏移量,当为0时表示居中显示 0
setSwitchViewTypeface(Typeface switchViewTypeface)

设置切换账号字体相关

参数说明
参数 参数类型 说明 默认值
switchViewTypeface Typeface 切换账号的文字的字体 Typeface.DEFAULT
setLogBtnLayout(String loginImgPath, int logBtnWidth, int logBtnHeight, int logBtnOffsetY, int logBtnOffsetY_B, int logBtnOffsetX)

设置登录按钮布局

参数说明
参数 参数类型 说明 默认值
loginImgPath String 登录按钮背景图片 gt_one_login_btn_normal
logBtnWidth int 登录按钮宽度 268
logBtnHeight int 登录按钮高度 36
logBtnOffsetY int 登录按钮相对于标题栏下边缘y偏移 324
logBtnOffsetY_B int 登录按钮相对于底部y偏移 0
logBtnOffsetX int 登录按钮相对于屏幕左边X轴偏移量,当为0时表示居中显示 0
setLogBtnTextView(String loginButtonText, int loginButtonColor, int logBtnTextSize)

设置登录按钮中间文字相关

参数说明
参数 参数类型 说明 默认值
loginButtonText String 文字设置 一键登录
loginButtonColor int 文字颜色 0xFFFFFFFF
logBtnTextSize int 文字大小 15
setLogBtnTextViewTypeface(Typeface logBtnTextViewTypeface)

设置登录按钮中间文字的字体相关

参数说明
参数 参数类型 说明 默认值
logBtnTextViewTypeface Typeface 登录按钮中间的文字的字体 Typeface.DEFAULT
setLogBtnLoadingView(String loadingView, int loadingViewWidth, int loadingViewHeight, int loadingViewOffsetRight)

设置loading图片相关

参数说明
参数 参数类型 说明 默认值
loadingView String loading图片地址 umcsdk_load_dot_white
loadingViewWidth int loading图片宽度 20
loadingViewHeight int loading图片高度 20
loadingViewOffsetRight int loading图片距离按钮右边X轴偏移量 12
setSloganView(int sloganColor, int sloganSize, int sloganOffsetY, int sloganOffsetY_B, int sloganOffsetX)

设置Slogan相关

参数说明
参数 参数类型 说明 默认值
sloganColor int 设置Slogan字体颜色 0xFFA8A8A8
sloganSize int 设置Slogan字体大小 10
sloganOffsetY int 设置Slogan相对于标题栏下边缘y偏移 382
sloganOffsetY_B int 设置Slogan相对于底部y偏移 0
sloganOffsetX int 设置Slogan相对于屏幕左边X轴偏移量,当为0时表示居中显示 0
setSloganViewTypeface(Typeface sloganViewTypeface)

设置slogan文字的字体相关

参数说明
参数 参数类型 说明 默认值
sloganViewTypeface Typeface slogan的文字的字体 Typeface.DEFAULT
setPrivacyLayout(int privacyLayoutWidth, int privacyOffsetY, int privacyOffsetY_B, int privacyOffsetX,boolean isUseNormalWebActivity)

设置隐私条款布局

参数说明
参数 参数类型 说明 默认值
privacyLayoutWidth int 设置隐私条款宽度,隐私条款大部分为字体,只规定宽度,高度自适应 256
privacyOffsetY int 设置隐私条款相对于标题栏下边缘y偏移 0
privacyOffsetY_B int 设置隐私条款相对于底部y偏移 18
privacyOffsetX int 设置隐私条款对于屏幕左边X轴偏移量,当为0时表示居中显示 0
isUseNormalWebActivity boolean 设置是否跳转到默认的隐私条款页面 true
setPrivacyCheckBox(String unCheckedImgPath, String checkedImgPath, boolean privacyState, int privacyCheckBoxWidth, int privacyCheckBoxHeight)

设置隐私条款选择框相关

参数说明
参数 参数类型 说明 默认值
unCheckedImgPath String 设置未选中下按钮的图片地址 gt_one_login_unchecked
checkedImgPath String 设置选中下按钮的图片地址 gt_one_login_checked
privacyState boolean 设置选择框是否默认选中 true
privacyCheckBoxWidth int 选择框图片宽度 9
privacyCheckBoxHeight int 选择框图片高度 9
setPrivacyClauseView(int baseClauseColor, int color, int privacyClauseTextSize)

设置隐私条款字体相关

参数说明
参数 参数类型 说明 默认值
baseClauseColor int 设置隐私条款基础文字颜色 0xFFA8A8A8
color int 设置隐私条款协议文字颜色 0xFF3973FF
privacyClauseTextSize int 设置隐私条款字体大小 10
setPrivacyTextView(String privacyTextViewTv1, String privacyTextViewTv2, String privacyTextViewTv3, String privacyTextViewTv4)

设置除了隐私条款其他的字体相关

参数说明
参数 参数类型 说明 默认值
privacyTextViewTv1 String 设置隐私条款文字1 登录即同意
privacyTextViewTv2 String 设置隐私条款文字2
privacyTextViewTv3 String 设置隐私条款文字3
privacyTextViewTv4 String 设置隐私条款文字4 并使用本机号码登录
setPrivacyClauseViewTypeface(Typeface privacyClauseBaseTextViewTypeface,Typeface privacyClauseTextViewTypeface)

设置隐私栏文字的字体相关

参数说明
参数 参数类型 说明 默认值
privacyClauseBaseTextViewTypeface Typeface 隐私栏基础的文字的字体 Typeface.DEFAULT
privacyClauseTextViewTypeface Typeface 隐私条款的文字的字体 Typeface.DEFAULT
setPrivacyClauseText(String clauseNameOne, String clauseUrlOne, String clauseNameTwo, String clauseUrlTwo, String clauseNameThree, String clauseUrlThree)

设置开发者隐私条款相关。

自定义隐私条款顺序。按顺序设置,当有条款名称与条款URL一起为空时,则使用默认的运营商隐私条款。否则按照顺序排列,自定义隐私条款最多只能两个。

参数说明
参数 参数类型 说明 默认值
clauseNameOne String 设置隐私条款1名称 null
clauseUrlOne String 设置隐私条款1URL null
clauseNameTwo String 设置隐私条款2名称 null
clauseUrlTwo String 设置隐私条款2URL null
clauseNameThree String 设置隐私条款3名称 null
clauseUrlThree String 设置隐私条款3URL null
setPrivacyUnCheckedToastText(String privacyUnCheckedToastText)

设置未同意隐私条款的文字提示相关。

参数说明
参数 参数类型 说明 默认值
privacyUnCheckedToastText String 设置未同意隐私条款的文字提示相关 请同意服务条款

具体的使用请参考demo.

另外,开发者可以对单个参数进行设置,每个参数都有相应的set方法,例如:
setPrivacyCheckBox(String unCheckedImgPath, String checkedImgPath, boolean privacyState, int privacyCheckBoxWidth, int privacyCheckBoxHeight)设置了隐私复选框的一系列属性,如果开发者只想对其中一项属性进行设置,可以调用相关的set方法。例如修改选中状态(privacyState)可以使用以下方法:

setPrivacyState(boolean privacyState)

备注

  • 图片资源放在drawable目录下,可以是一张图片,也可以是一个xml文件。
  • 设置的长宽和距离的单位为dp,文字大小的单位为sp。颜色用16进制表示。

如果开发者的项目中用到andResGuard,需要配置以下白名单:

andResGuard {
    whiteList = [
            // for gysdk
            "R.drawable.gt_*",
            "R.drawable.umcsdk_*",
            "R.drawable.gy_*",
            "R.layout.gt_*",
            "R.layout.gy_*",
            "R.id.gt_*",
            "R.id.gy_*",
            "R.anim.umcsdk_*",
            "R.style.gy_*",
            "R.string.gt_*"
            // 其他一键登录使用到的资源
            ...
    ]
}

调用示例

ELoginThemeConfig.Builder builder = new ELoginThemeConfig.Builder();
        //设置背景
builder.setAuthBGImgPath("login_bg")
        //设置状态栏颜色 字体颜色
       .setStatusBar(Color.WHITE, Color.WHITE, true)
       //设置标题栏布局
       .setAuthNavLayout(Color.WHITE, 49, true, false)
       ...  

GYManager.getInstance().eAccountLogin(builder.build(), new GyCallBack() {
                    @Override
                    public void onSuccess(GYResponse response) {
                        Log.d(TAG, "response:" + response);
                        //关闭验证界面
                        GYManager.getInstance().finishAuthActivity();
                        showToast("登录成功");                                            
                    }

                    @Override
                    public void onFailed(GYResponse response) {
                        Log.d(TAG, "response:" + response);
                        showToast("一键登录失败:" + response);
                        //关闭验证界面
                        GYManager.getInstance().finishAuthActivity();
                    }
                });

返回示例

一键登录会通过GyCallBack返回结果.

GyCallBack:

public interface GyCallBack {

    /**
     * description:登录成功.
     */
    void onSuccess(GYResponse response);

    /**
     * description:登录失败.
     */
    void onFailed(GYResponse response);

}

GYResponse返回示例:

成功示例:
{
    gyuid='20827b1266924eb691b61f4a538222f232', 
    success=true, 
    code=30000,             
    msg='{"verifyType":0,"data":{"token":"je3o9NNU0w6kpyDEBpIdC4","expiredTime":1553139758029}}'
}
失败示例:
{
    gyuid='8f41f31b0e7a43e6bbb4d1e6da77489b62', 
    success=false, 
    code=30006,
    msg='{"errorCode":"-40301","process_id":"6684c251a45717e57105af385649d5f4","metadata":{"msg":"timestamp-out-of-date","result":-10009},"operatorType":"CT","clienttype":"1","msg":"-10009"}'
}
  • 类 GYResponse 属性详细说明:
属性 类型 属性说明
gyuid String 个验用户唯一标识
success boolean 登录是否成功
code int 状态码,30000表示登录成功
msg String 登录成功的时候,包含登录结果信息,登录失败的时候,为状态码描述信息
  • 登录成功的时候 msg说明:

登录成功的时候,GYResponse中msg会是如下的JSON格式字符串.


//一键登录成功
{
    "msg":{
            "verifyType":0,
            "data":{
                "token":"qUiRvTAFLeAb36ubCtpcj",
                "expiredTime":1552887621123
            }
    }
}

一键登录成功返回参数解释:

字段 必须 类型 说明
verifyType int 验证类型,当前版本为0。
data JSON 验证结果
token String 用户授权凭证信息,可用于从服务端获取完整登录信息。
expiredTime long token有效期
  • 登录失败的时候msg说明:

登录失败的时候,GYResponse中msg会包含错误的详细信息。在code为30006的时候,msg是一个JSON字符串,其余情况msg是code码的简单解释信息,例如网络异常

以下是登录失败后,code为30006时msg中信息的解释:

字段 必须 类型 说明
clienttype String 客户端类型,1表示Android
errorCode String 错误码
metadata JSONObject 具体的错误原因
msg String 运营商返回的信息
operatorType String 客户端获取的运营商(CT表示电信、CU表示联通、CM表示移动)
process_id String 流水号

添加自定义控件

    /**
     * 一键登录界面添加自定义控件.
     *
     * @param id         控件名称.
     * @param viewConfig 控件配置.
     */
    public void addRegisterViewConfig(String id, AuthRegisterViewConfig viewConfig)

在调用eAccountLogin之前,开发者可以在授权页面titlebar和body添加自定义的控件。
注意:自定义的控件不允许覆盖SDK默认的UI。

输入参数

参数名称 是否必填 类型 描述
id String 控件名称
viewConfig AuthRegisterViewConfig 控件配置

调用示例

Button mTitleBtn = new Button(context);
        mTitleBtn.setText("其他");
        mTitleBtn.setTextColor(0xff000000);
        mTitleBtn.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
        mTitleBtn.setBackgroundColor(Color.TRANSPARENT);
        RelativeLayout.LayoutParams mLayoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        mLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);
        mTitleBtn.setLayoutParams(mLayoutParams);

GYManager.getInstance().addRegisterViewConfig("title_button", new AuthRegisterViewConfig.Builder()
                .setView(mTitleBtn)
                .setRootViewId(AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_TITLE_BAR)
                .setCustomInterface(new CustomInterface() {
                    @Override
                    public void onClick(Context context) {
                        showToast( "动态注册的其他按钮");
                    }
                })
                .build()
        );

AuthRegisterViewConfig说明:

AuthRegisterViewConfig authRegisterViewConfig =new AuthRegisterViewConfig.Builder().build();

方法说明:

方法名 传参类型 说明
setView View 开发者传入自定义的控件,需要设置好控件的布局属性,SDK只支持RelativeLayout布局
setRootViewId int 设置控件的位置。RootViewId.ROOT_VIEW_ID_TITLE_BAR指标题栏,RootViewId.ROOT_VIEW_ID_BODY指授权页空白处
setCustomInterface CustomInterface 设置控件事件。CustomInterface是一个接口,实现了点击方法

设置一键登录页面回调

    /**
     * 设置一键登录界面回调.
     *
     * @param authPageListener 回调.
     */
    public void setAuthPageListener(AuthPageListener authPageListener);

开发者可以通过该方法设置一键登录页面的回调。
该接口请开发者按照自己业务需求实现,适用于埋点、自定义实现协议界面等需求。

AuthPageListener详细解释:

public interface AuthPageListener {

    /**
     * 隐私条款点击回调.
     *
     * @param name 条款名称.
     * @param url  条款url.
     */
    public void onPrivacyClick(String name, String url);

    /**
     * 隐私条款复选框点击回调.
     *
     * @param checked 复选框选中状态,true为选中.
     */
    public void onPrivacyCheckBoxClick(boolean checked);

    /**
     * 登录按钮点击回调.
     */
    public void onLoginButtonClick();

    /**
     * 授权页面拉起回调.
     */
    public void onAuthActivityCreate(Activity activity);

    /**
     * 隐私条款页面拉起回调.
     */
    public void onAuthWebActivityCreate(Activity activity);

}

调用示例

          //添加一键登录页面回调
        GYManager.getInstance().setAuthPageListener(new AuthPageListener() {
            @Override
            public void onPrivacyClick(String s, String s1) {
                Log.d(TAG, "隐私条款点击回调:" + s + ":" + s1);
            }

            @Override
            public void onPrivacyCheckBoxClick(boolean b) {
                Log.d(TAG, "隐私条款复选框点击回调:" + b);
            }

            @Override
            public void onLoginButtonClick() {
                Log.d(TAG, "一键登录按钮点击回调");
            }

            @Override
            public void onAuthActivityCreate(Activity activity) {
                Log.d(TAG, "授权页面启动回调");
            }

            @Override
            public void onAuthWebActivityCreate(Activity activity) {
                Log.d(TAG, "隐私条款页面启动回调");
            }
        });

判断隐私条款是否同意

    /**
     * .判断隐私条款是否同意
     */
    public boolean isPrivacyChecked();

通过该接口可以判断当前一键登录页面的隐私条款复选框是否被选中。

关闭授权页面的loading

    /**
     * 关闭授权页面的loading.
     */
    public void stopLoading();

用户点击一键登录按钮后,默认按钮右侧会显示一个loading的动画,该动画不会自动关闭。如果在一键登录结束后关闭界面,则不需要调用此接口。如果开发者的业务需求是不关闭界面,那么可能会用到该接口。

关闭一键登录界面

    /**
     * 关闭验证界面.
     */
    public void finishAuthActivity() 

SDK除了返回按钮触发以外,默认是不finsih授权页的,需要开发者自行实现。

关闭一键登录

    /**
     * 关闭一键登录.
     */
    public void cancelELogin();

一键登录结束后调用该方法,释放资源。

状态码

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,联通 3G、4G,电信 4G。

是否支持双卡手机

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

WIFI环境下能否验证

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

是否支持携号转网用户

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

是否支持虚拟运营商

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

是否支持流量卡

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

是否支持分屏显示

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

部分OPPO手机上预登录失败

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

  • 引导手动设置权限:设置->双卡与移动网络->使用WLAN与移动网络的应用->找到需要设置的APP->设置WLAN与移动数据即可
  • 关闭WIFI,操作应用,会弹出使用移动网络提醒,点击设为允许,即可正常使用

其他预登录失败问题排查

  • 确定手机时间是否为正常时间,非正常时间会导致预登录失败。
  • 确定当前网络有无代理,代理会导致预登录失败。

文档中心搜索