场景①:
登录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,但是有信息返回
因为项目里配置了渠道打包,把那个渠道修改为后台已有的,接口请求成功。
渠道配置.png
参考链接:
https://www.jianshu.com/p/c6c983a9f616
https://blog.csdn.net/weixin_43296748/article/details/100577893
网友评论