Android 一键登录
最近更新:2024-01-12

Android 一键登录

本文旨要介绍Android SDK 一键登录的最佳实践方式。

支持版本

v3.0.0 及以后版本。

一键登录流程说明

获取运营商预取号->设置授权页面UI样式->拉起授权页面

1、获取运营商预取号

API:预取号 预取号是通过运营商获取登录token的前置步骤,所以我们建议在进入需要使用一键登录的页面后,先调用预取号接口,这样当用户真正要使用一键登录的时候可以减少预取号加载时间,提升用户体验。

@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //建议在页面加载时进行获取预取号 preLogin(); } private void preLogin() { //判断SDK初始化状态 if (JVerificationInterface.isInitSuccess()){ JVerificationInterface.preLogin(this, 5000, new PreLoginListener() { @Override public void onResult(final int code, final String content, JSONObject operatorReturn) { //回调响应结果 } }); } }
          
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //建议在页面加载时进行获取预取号
    preLogin();
}

private void preLogin() {
    //判断SDK初始化状态
    if (JVerificationInterface.isInitSuccess()){
        JVerificationInterface.preLogin(this, 5000, new PreLoginListener() {
            @Override
            public void onResult(final int code, final String content, JSONObject operatorReturn) {
                //回调响应结果
            }
        });
    }
}

        
此代码块在浮窗中显示

API说明

参数 类型 含义 说明
context Context 上下文 应用程序的上下文
timeOut int 超时时间 有效取值范围(0,10000], 若小于等于 0 则取默认值 5000. 大于 10000 则取 10000, 为保证预取号的成功率,建议设置为 3000-5000ms
listener PreLoginListener 接口回调 预取号结果的响应回调

2、设置授权页面UI样式

API:自定义授权页面 UI 样式 在拉起授权登录页面之前,建议设置自定义的页面样式以呈现更好的页面效果。

private void loginAuth() { //建议拉起授权页面之前设置自定义UI setUIConfig(); //以下为拉起授权页面部分 .............. } private void setUIConfig() { //UIConfig案例,具体参考API文档JVerifyUIConfig 一键登录-配置元素说明 JVerifyUIConfig uiConfig = new JVerifyUIConfig.Builder().setAuthBGImgPath("main_bg") .setNavColor(0xff0086d0) .setNavText("登录") .setNavTextColor(0xffffffff) .setNavReturnImgPath("umcsdk_return_bg") .setLogoWidth(70) .setLogoHeight(70) .setLogoHidden(false) .setNumberColor(0xff333333) .setLogBtnText("本机号码一键登录") .setLogBtnTextColor(0xffffffff) .setLogBtnImgPath("umcsdk_login_btn_bg") .setPrivacyNameAndUrlBeanList(List<PrivacyBean>) .setPrivacyNameAndUrlBeanList(List<PrivacyBean>) .setUncheckedImgPath("umcsdk_uncheck_image") .setCheckedImgPath("umcsdk_check_image") .setSloganTextColor(0xff999999) .setLogoOffsetY(50) .setLogoImgPath("logo_cm") .setNumFieldOffsetY(170) .setSloganOffsetY(230) .setLogBtnOffsetY(254) .setNumberSize(18) .setPrivacyState(false) .setNavTransparent(false) .addCustomView(mBtn, true, new JVerifyUIClickCallback() { @Override public void onClicked(Context context, View view) {Toast.makeText(context,"动态注册的其他按钮",Toast.LENGTH_SHORT).show();} }).addCustomView(mBtn2, false, new JVerifyUIClickCallback() { @Override public void onClicked(Context context, View view) {Toast.makeText(context,"动态注册的其他按钮 222",Toast.LENGTH_SHORT).show();} }).addNavControlView(navBtn, new JVerifyUIClickCallback() { @Override public void onClicked(Context context, View view) {Toast.makeText(context,"导航栏按钮点击",Toast.LENGTH_SHORT).show();} }).setPrivacyOffsetY(30).build(); //设置自定义页面UI JVerificationInterface.setCustomUIWithConfig(uiConfig); }
          
private void  loginAuth() {
        //建议拉起授权页面之前设置自定义UI
        setUIConfig();
        //以下为拉起授权页面部分
        ..............
}

private void setUIConfig() {
        //UIConfig案例,具体参考API文档JVerifyUIConfig 一键登录-配置元素说明
        JVerifyUIConfig uiConfig = new JVerifyUIConfig.Builder().setAuthBGImgPath("main_bg")
                    .setNavColor(0xff0086d0)
                    .setNavText("登录")
                    .setNavTextColor(0xffffffff)
                    .setNavReturnImgPath("umcsdk_return_bg")
                    .setLogoWidth(70)
                    .setLogoHeight(70)
                    .setLogoHidden(false)
                    .setNumberColor(0xff333333)
                    .setLogBtnText("本机号码一键登录")
                    .setLogBtnTextColor(0xffffffff)
                    .setLogBtnImgPath("umcsdk_login_btn_bg")
                    .setPrivacyNameAndUrlBeanList(List<PrivacyBean>)
                    .setPrivacyNameAndUrlBeanList(List<PrivacyBean>)
                    .setUncheckedImgPath("umcsdk_uncheck_image")
                    .setCheckedImgPath("umcsdk_check_image")
                    .setSloganTextColor(0xff999999)
                    .setLogoOffsetY(50)
                    .setLogoImgPath("logo_cm")
                    .setNumFieldOffsetY(170)
                    .setSloganOffsetY(230)
                    .setLogBtnOffsetY(254)
                    .setNumberSize(18)
                    .setPrivacyState(false)
                    .setNavTransparent(false)
                    .addCustomView(mBtn, true, new JVerifyUIClickCallback() {
                        @Override
                        public void onClicked(Context context, View view) {Toast.makeText(context,"动态注册的其他按钮",Toast.LENGTH_SHORT).show();}
                    }).addCustomView(mBtn2, false, new JVerifyUIClickCallback() {
                        @Override
                        public void onClicked(Context context, View view) {Toast.makeText(context,"动态注册的其他按钮 222",Toast.LENGTH_SHORT).show();}
                    }).addNavControlView(navBtn, new JVerifyUIClickCallback() {
                        @Override
                        public void onClicked(Context context, View view) {Toast.makeText(context,"导航栏按钮点击",Toast.LENGTH_SHORT).show();}
                    }).setPrivacyOffsetY(30).build();

        //设置自定义页面UI
        JVerificationInterface.setCustomUIWithConfig(uiConfig);
}


        
此代码块在浮窗中显示

3、拉起授权页面

API:拉起授权页面 拉起授权页面,在该页面中完成一键登录; ####注意 如果没有获取预取号该接口则会主动获取预取号,然后再进行拉起页面; 如果调用该接口时调用了预取号接口并且还没有获取完成,则回调中会返回预取号获取中的提示,建议在预取号获取完成后再调用该接口; 没有设置自定义UI,会使用默认UI;

private void loginAuth() { //设置自定义UI setUIConfig(); //LoginSettings为登录配置 LoginSettings settings = new LoginSettings(); settings.setAutoFinish(true);// 设置登录完成后是否自动关闭授权页 settings.setTimeout(15 * 1000);// 设置超时时间,单位毫秒。 合法范围(0,30000], 范围以外默认设置为 10000 settings.setAuthPageEventListener(new AuthPageEventListener() { @Override public void onEvent(int cmd, String msg) {//do something...} });// 设置授权页事件监听 //拉起授权页面 JVerificationInterface.loginAuth(this, settings, new VerifyListener() { @Override public void onResult(int code, String content, String operator, JSONObject operatorReturn) { //回调授权页面响应结果 //得到loginToken以完成登录 } }); } private void setUIConfig() { ...... }
          
private void  loginAuth() {
    //设置自定义UI
    setUIConfig();
    
    //LoginSettings为登录配置
    LoginSettings settings = new LoginSettings();
    settings.setAutoFinish(true);// 设置登录完成后是否自动关闭授权页
    settings.setTimeout(15 * 1000);// 设置超时时间,单位毫秒。 合法范围(0,30000], 范围以外默认设置为 10000
    settings.setAuthPageEventListener(new AuthPageEventListener() {
        @Override
        public void onEvent(int cmd, String msg) {//do something...}
    });// 设置授权页事件监听
    
    //拉起授权页面
    JVerificationInterface.loginAuth(this, settings, new VerifyListener() {
         @Override
              public void onResult(int code, String content, String operator, JSONObject operatorReturn) {
                  //回调授权页面响应结果
                  //得到loginToken以完成登录

              }
          });
}

private void setUIConfig() {
        ......
}

        
此代码块在浮窗中显示

API说明

参数 类型 含义 说明
context Context 上下文 应用程序的上下文
settings LoginSettings 登录接口设置项 用来设置登录完成后是否自动关闭等配置,
listener VerifyListener 接口回调 登录结果的响应回调
文档内容是否对您有帮助?

Copyright 2011-2022, jiguang.cn, All Rights Reserved. 粤ICP备12056275号-13 深圳市和讯华谷信息技术有限公司

在文档中心打开