美文网首页Android
记一次错误 :三方登录退出&H5交互无法调起&HTTP401错误

记一次错误 :三方登录退出&H5交互无法调起&HTTP401错误

作者: Merbng | 来源:发表于2019-12-10 19:00 被阅读0次

场景①:

登录qq1 ,退出登录,再切换qq2,登录后还是显示qq1的信息

解决①:

第三方登录, 退出app记得 调用 取消授权
UMShareAPI.get(activity).doOauthVerify(mActivity,mPlatform, authListener);
封装一下:

   /**
     * 友盟取消授权(退出登录调用)
     */
    public static void umengDeleteOauth(Activity activity, SHARE_MEDIA share_media_type) {

        UMShareAPI.get(activity).deleteOauth(activity, share_media_type, new UMAuthListener() {
            @Override
            public void onStart(SHARE_MEDIA share_media) {
                //开始授权
                KLog.e("onStart", "onStart: ");
            }

            @Override
            public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {
                //取消授权成功 i=1
                KLog.e("onComplete", "onComplete: ");
            }

            @Override
            public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {
                //授权出错
                KLog.e("onError", "onError: ");
            }

            @Override
            public void onCancel(SHARE_MEDIA share_media, int i) {
                //取消授权
                KLog.e("onCancel", "onCancel: ");
            }
        });
    }

场景②:

跟h5交互时,点击没有掉起微信分享

解决②:

要分享的url含有汉字,客户端进行编码处理,传给h5的昵称为null,导致编码报错,无法调起。
要编码的内容需要判空
String nick = Uri.encode(Uri.encode(loginData.getNickName()));

场景③:

请求接口报401
报错信息如下:

retrofit2.adapter.rxjava2.HttpException: HTTP 401 
    at retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(BodyObservable.java:54)
    at retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(BodyObservable.java:37)
    at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:44)
    at io.reactivex.Observable.subscribe(Observable.java:12090)
    at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:34)
    at io.reactivex.Observable.subscribe(Observable.java:12090)
    at io.reactivex.internal.operators.observable.ObservableSingleSingle.subscribeActual(ObservableSingleSingle.java:35)
    at io.reactivex.Single.subscribe(Single.java:3438)
    at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
    at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
    at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
    at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
    at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:784)


后台说不报错,网上都了一堆资料,大致意思是没有处理onerror
后来抓取传参的body在postman跑了一下,也是401,但是有信息返回

postman报错.jpg

因为项目里配置了渠道打包,把那个渠道修改为后台已有的,接口请求成功。


渠道配置.png

参考链接:
https://www.jianshu.com/p/c6c983a9f616
https://blog.csdn.net/weixin_43296748/article/details/100577893

相关文章

网友评论

    本文标题:记一次错误 :三方登录退出&H5交互无法调起&HTTP401错误

    本文链接:https://www.haomeiwen.com/subject/jcoggctx.html