本文档仅适用于3.0以前的gysdk 或者 3.0以后仍旧使用ELoginThemeConfig入参的一键登录接口描述。
3.0以后使用完全自定义登录授权页,请统一在《API接口》中查看文档
一键认证:一键认证方案,运营商利用其移动数据网络,采用“通信网关取号”及 SIM卡识别等技术,准确验证用户本机号码,实现一键认证,并可有效规避短信验证码泄露风险。 通过运营商网关认证能力,用户无需输入手机号码和短信验证码,即可使用手机号一键认证成功。
使用限制说明:一键认证功能的使用前提是用户打开蜂窝网络,目前支持的网络制式有移动 2G、3G、4G,5G。联通 3G、4G、5G,电信 4G,5G。对于双卡手机,以开启数据流量的 SIM 卡进行认证;对于Wifi环境,在数据网络开通的前提下,会强制使用数据网络触发网关请求,请求仅为几K,可正常校验。 另外,一键认证当前不支持分屏显示,建议此功能不要应用在分屏显示场景下。
在接入一键登录之前,请先确认已经集成个验SDK。下文使用到的资源文件,均可在官网下载的SDK资源包中获得。调用一键认证接口前请先完成个验SDK的接入与初始化。
在模块级 build.gradle 中的dependencies块中添加elogin sdk依赖,如下:
dependencies {
implementation 'com.getui:gysdk:2.3.1.0'
implementation 'com.getui:elogin:1.3.1.0'
implementation 'com.getui:gtc:3.2.4.0'
}
将官网下载下来的 aar包 放置到项目的libs目录下
build.gradle在模块级 build.gradle 中的dependencies块中添加elogin sdk依赖,如下:
defaultConfig {
....
}
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
// 添加个验 aar 依赖,name与aar包的名字同步,此处的 ${version} 对应您当前相应的 SDK 版本号
implementation(name: 'gysdk-${version}', ext: 'aar')
implementation(name: 'gtc-${version}', ext: 'aar')
//添加一键登录
implementation(name: 'elogin-${version}', ext: 'aar')
}
在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" />
-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.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);
注意:
isPreLoginResultValid接口来帮助开发者判断当前的预登录结果是否有效. | 参数名称 | 是否必填 | 类型 | 描述 |
|---|---|---|---|
| timeout | 是 | int | 超时时间(建议8000ms-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"}',
}
| 属性 | 类型 | 属性说明 |
|---|---|---|
| gyuid | String | 个验用户唯一标识 |
| success | boolean | 预登录是否成功 |
| code | int | 状态码,30000表示预登录成功 |
| msg | String | 详细信息 |
预登录成功时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.Builder builder = new ELoginThemeConfig.Builder();
//设置背景
builder.setAuthBGImgPath("login_bg")
//设置状态栏颜色 字体颜色
.setStatusBar(Color.WHITE, Color.WHITE, true)
//设置标题栏布局
.setAuthNavLayout(Color.WHITE, 49, true, false)
...
return builder.build();
设置背景图⽚
| 参数 | 参数类型 | 说明 | 默认值 | |
|---|---|---|---|---|
| authBGImgPath | String | 设置背景图⽚。放在drawable文件下,以下背景图片,路径与之保持一致 | gt_one_login_bg |
设置gif背景
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| authGifBGUriPath | String | gif动图路径 |
具体的使用请参考demo.
设置视频背景
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| authVideoBGPath | String | video路径 |
具体的使用请参考demo.
设置drawable背景,优先于setAuthBGImgPath,覆盖在setAuthGifBGUriPath和setAuthVideoBGPath上面
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| authBGDrawable | Drawable | 自实现的drawable |
具体的使用请参考demo.
设置弹窗主题相关
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| 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 |
设置状态栏颜色、字体颜色。
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| statusBarColor | int | 自定义状态栏背景颜色 | 0 |
| navigationBarColor | int | 自定义底部导航栏背景颜色 | 0 |
| isLightColor | boolean | 设置状态栏内容的颜色(只能黑白),true为黑色,false为白色 | false |
设置标题栏布局
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| navColor | int | 标题栏颜色 | 0xFF3973FF |
| authNavHeight | int | 标题栏高度 | 49 |
| authNavTransparent | boolean | 标题栏是否透明 | true |
| authNavGone | boolean | 标题栏是否隐藏,此处的隐藏为View.GONE | false |
设置标题栏中间文字相关
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| navText | String | 文字设置 | 一键登录 |
| navTextColor | int | 字体颜色 | 0xFFFFFFFF |
| navTextSize | int | 字体大小,单位为sp,以下设置字体大小的单位与之保持一致 | 17 |
| navTextNormal | boolean | 设置是否隐私条款页面的标题栏中间文字使用默认值,true为使用navWebViewText,false为使用默认隐私条款的名字 | false |
| navWebViewText | String | 隐私条款页面的标题栏中间文字 | 服务条款 |
| navWebViewTextColor | int | 隐私条款页面的标题栏中间文字颜色 | 0xFF000000 |
| navWebViewTextSize | int | 隐私条款页面的标题栏中间文字大小 | 17 |
设置标题栏中间文字的字体相关
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| navTextTypeface | Typeface | 标题栏的文字的字体 | Typeface.DEFAULT |
| navWebViewTextTypeface | Typeface | 条款页面标题栏的文字的字体 | Typeface.DEFAULT |
设置标题栏返回按钮相关
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| navReturnImgPath | String | 返回按钮图片 | gt_one_login_ic_chevron_left_black |
| returnImgWidth | int | 返回按钮图片宽度 | 24 |
| returnImgHeight | int | 返回按钮图片高度 | 24 |
| navReturnImgHidden | boolean | 返回按钮是否隐藏 | false |
| returnImgOffsetX | int | 返回按钮图片距离屏幕左边X轴偏移量 | 12 |
设置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 |
设置号码相关
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| numberColor | int | 号码栏字体颜色 | 0xFF3D424C |
| numberSize | int | 号码栏字体大小 | 24 |
| numFieldOffsetY | int | 号码栏相对于标题栏下边缘y偏移 | 200 |
| numFieldOffsetY_B | int | 号码栏相对于底部y偏移 | 0 |
| numFieldOffsetX | int | 号码栏相对于屏幕左边X轴偏移量,当为0时表示居中显示 | 0 |
设置号码栏字体相关
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| numberViewTypeface | Typeface | 号码栏的文字的字体 | Typeface.DEFAULT |
设置切换账号相关
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| 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 |
设置切换账号字体相关
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| switchViewTypeface | Typeface | 切换账号的文字的字体 | Typeface.DEFAULT |
设置登录按钮布局
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| 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 |
设置登录按钮中间文字相关
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| loginButtonText | String | 文字设置 | 一键登录 |
| loginButtonColor | int | 文字颜色 | 0xFFFFFFFF |
| logBtnTextSize | int | 文字大小 | 15 |
设置登录按钮中间文字的字体相关
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| logBtnTextViewTypeface | Typeface | 登录按钮中间的文字的字体 | Typeface.DEFAULT |
设置loading图片相关
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| loadingView | String | loading图片地址 | umcsdk_load_dot_white |
| loadingViewWidth | int | loading图片宽度 | 20 |
| loadingViewHeight | int | loading图片高度 | 20 |
| loadingViewOffsetRight | int | loading图片距离按钮右边X轴偏移量 | 12 |
设置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 |
设置slogan文字的字体相关
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| sloganViewTypeface | Typeface | slogan的文字的字体 | Typeface.DEFAULT |
设置隐私条款布局
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| privacyLayoutWidth | int | 设置隐私条款宽度,隐私条款大部分为字体,只规定宽度,高度自适应 | 256 |
| privacyOffsetY | int | 设置隐私条款相对于标题栏下边缘y偏移 | 0 |
| privacyOffsetY_B | int | 设置隐私条款相对于底部y偏移。privacyOffsetY 和 privacyOffsetY_B 这2个参数默认只生效1个,若希望其中1个生效,需要设置另一个值为 0 。如果都是非0值,则只生效 privacyOffsetY_B | 18 |
| privacyOffsetX | int | 设置隐私条款对于屏幕左边X轴偏移量,当为0时表示居中显示 | 0 |
| isUseNormalWebActivity | boolean | 设置是否跳转到默认的隐私条款页面 | true |
设置隐私条款选择框相关
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| unCheckedImgPath | String | 设置未选中下按钮的图片地址 | gt_one_login_unchecked |
| checkedImgPath | String | 设置选中下按钮的图片地址 | gt_one_login_checked |
| privacyState | boolean | 设置选择框是否默认选中 | true |
| privacyCheckBoxWidth | int | 选择框图片宽度 | 9 |
| privacyCheckBoxHeight | int | 选择框图片高度 | 9 |
设置隐私条款字体相关
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| baseClauseColor | int | 设置隐私条款基础文字颜色 | 0xFFA8A8A8 |
| color | int | 设置隐私条款协议文字颜色 | 0xFF3973FF |
| privacyClauseTextSize | int | 设置隐私条款字体大小 | 10 |
设置隐私栏文字的字体相关
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| privacyClauseBaseTextViewTypeface | Typeface | 隐私栏基础的文字的字体 | Typeface.DEFAULT |
| privacyClauseTextViewTypeface | Typeface | 隐私条款的文字的字体 | Typeface.DEFAULT |
设置除了隐私条款其他的字体相关
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| privacyTextViewTv1 | String | 设置隐私条款文字1 | 登录即同意 |
| privacyTextViewTv2 | String | 设置隐私条款文字2 | 和 |
| privacyTextViewTv3 | String | 设置隐私条款文字3 | 、 |
| privacyTextViewTv4 | String | 设置隐私条款文字4 | 并使用本机号码登录 |
设置开发者隐私条款相关。
自定义隐私条款顺序。按顺序设置,当有条款名称与条款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 |
设置多个开发者隐私条款相关。
自定义多个隐私条款。按顺序设置,长度为 4 的倍数,配置后优先使用该接口的配置,否则使用setPrivacyClauseText的配置。可通过预留一组空字符串配置让 SDK 自动添加运营商协议。
每四个String的含义为:连接符、隐私协议名、隐私协议地址、连接符。
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| privacyClauseTextStrings | String[] | 设置隐私条款数组 | null |
builder.setPrivacyClauseTextStrings(
"登录即认可", "", "", "",
"、", "自定义协议1", "https://www.getui.com/cn/index.html?f=3&p=1", "",
"、", "自定义协议2", "https://www.getui.com/cn/index.html?f=3&p=1", "",
"和", "自定义协议3", "https://www.getui.com/cn/company.html", "并使⽤用本机号码登录")
设置未同意隐私条款的文字提示相关。
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| privacyUnCheckedToastText | String | 设置未同意隐私条款的文字提示相关 | 请同意服务条款 |
具体的使用请参考demo.
设置是否显示 未同意隐私条款的文字提示相关。
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| showPrivacyUncheckedToast | Boolean | 设置是否显示未同意隐私条款的文字提示相关 | true |
具体的使用请参考demo.
设置是否显示 运营商隐私额协议的书名号。
| 参数 | 参数类型 | 说明 | 默认值 |
|---|---|---|---|
| hasQuotationMarkOnCarrierProtocol | Boolean | 设置运营商隐私协议显示书名号 | false |
具体的使用请参考demo.
另外,开发者可以对单个参数进行设置,每个参数都有相应的set方法,例如:setPrivacyCheckBox(String unCheckedImgPath, String checkedImgPath, boolean privacyState, int privacyCheckBoxWidth, int privacyCheckBoxHeight)设置了隐私复选框的一系列属性,如果开发者只想对其中一项属性进行设置,可以调用相关的set方法。例如修改选中状态(privacyState)可以使用以下方法:
setPrivacyState(boolean privacyState)
备注
如果开发者的项目中用到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"}'
}
| 属性 | 类型 | 属性说明 |
|---|---|---|
| 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 =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.
*/
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、5G,联通 3G、4G、5G,电信 4G、5G。
支持,双卡手机以开启数据流量的 SIM 卡进行认证。
在数据网络开通的前提下,WiFi 环境中会强制使用数据网络触发网关请求,请求仅为几K,可正常校验。
SDK 不提供接口判断用户是否为携号转网用户,但可以判断用户流量卡当前的运营商。即携号转网用户可正常使用。
仅支持三大运营商(移动、联通、电信)的手机号进行一键登录。
三大运营商(移动、联通、电信)的卡,能够正常使用数据网络,运营商通过网关能够正常取号,均会被作为正常的卡来判断。
目前一键认证不支持分屏幕显示。
部分OPPO手机上新安装APP默认只有wifi网络权限,默认没有给予访问移动数据流量的权限。需要用户在设置中手动授予权限。开发者可以引导用户开启,有以下两种方案:
以上文档对您是否有帮助?