前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >极验onelogin 一键登录 接入流程与问题

极验onelogin 一键登录 接入流程与问题

作者头像
Jingbin
发布2019-11-11 13:00:16
9200
发布2019-11-11 13:00:16
举报
文章被收录于专栏:Android 技术栈Android 技术栈

极验onelogin一键登录

前段时间接入了一键登录,里面的坑还不少,现梳理下来,为防止后期回顾及 避免以后的人能快速知道问题所在。

Android 接入文档:https://docs.geetest.com/onelogin/deploy/client/android

注意点:

1.版本问题

现在最新的版本是:

代码语言:javascript
复制
implementation 'com.geetest:onelogin:0.8.1'

我们使用的版本是 0.7.1,经测试发现此版本部分的电信号会不能使用一键登录,经测试大部分电信手机是好的,接入的期间,版本升级成了 0.8.0,修复了部分电信不能登录的问题。然后发现获取到authcode后,后台验证不了,然后我们就回退到了0.7.1的版本。最新的0.8.1还未测试。

2.混淆

因为一键登录对电信的号经常有问题,再加上配置的Jenkins自动打包打的是debug的包,然后又忘了配置混淆,导致没有混淆就发了包,全部的电信号都登录不上了。

混淆规则:

代码语言:javascript
复制
-dontwarn com.geetest.onelogin.**
-keep class com.geetest.onelogin.** {
*;
}
-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.account.**
-keep class cn.com.chinatelecom.account.** {
*;
}
3.提前初始化:

因为取号是耗时操作,所以需要提前初始化取号,不然点击登录按钮的时候会卡顿一会儿,那一会儿的时间就是要取号。且这样只初始化一次,如果无脑一直初始化取号会产生莫名其妙的问题。

代码语言:javascript
复制
    private boolean isHavedInit = false;
    public void oneLoginInit() {
        if (!isHavedInit) {
            isHavedInit = true;
            OneLoginHelper.with().init(context);
            oneLoginPreGetToken(false);
        }
    }
4.退出登录时 和 网络变化时 ,再次初始化取号

发生这两种情况时,人为判定是用户想要切换账号,所以再次取号:

代码语言:javascript
复制
    public void onlyInit() {
        if (!OneLoginHelper.with().isInitSuccess() && context != null) {
            OneLoginHelper.with().init(context);
        }
        if (OneLoginHelper.with().isPreGetTokenSuccess() && !OneLoginHelper.with().isAccessCodeExpired()) {
        } else {
            //注意,如果提前预取号的话,为了避免还没结果之前再次回调被多次调用,需要判断预取号是否完成
            //这里可以设计成当没完成预取号的话,按钮禁止点击等等。
            //同时开发者对于提前预取号失败的话,也可以直接进行降级策略,比如收发短信等等。
            if (!OneLoginHelper.with().isPreGetTokenComplete()) {
//                Toast.makeText(context, "当前预取号还没成功", Toast.LENGTH_SHORT).show();
            } else {
                // 打开页面 不执行耗时操作
                oneLoginPreGetToken(false);
            }
        }
    }
5.通过一键登录,登录成功后的操作
代码语言:javascript
复制
    oneLoginCancel();
    OneLoginHelper.with().dismissAuthActivity();
                                
    /**
     * 只有点击一键登录才执行这个
     * 关闭 需在页面关闭时候调用
     */
    public void oneLoginCancel() {
        OneLoginHelper.with().cancel();
        if (subscription != null) {
            subscription.unsubscribe();
            subscription = null;
        }
    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.版本问题
  • 2.混淆
  • 3.提前初始化:
  • 4.退出登录时 和 网络变化时 ,再次初始化取号
  • 5.通过一键登录,登录成功后的操作
相关产品与服务
短信
腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档