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

极验onelogin一键登录

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

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

注意点:

1.版本问题

现在最新的版本是:

implementation 'com.geetest:onelogin:0.8.1'

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

2.混淆

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

混淆规则:

-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.提前初始化:

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

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

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

    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.通过一键登录,登录成功后的操作
	oneLoginCancel();
	OneLoginHelper.with().dismissAuthActivity();
                                
    /**
     * 只有点击一键登录才执行这个
     * 关闭 需在页面关闭时候调用
     */
    public void oneLoginCancel() {
        OneLoginHelper.with().cancel();
        if (subscription != null) {
            subscription.unsubscribe();
            subscription = null;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值