问题:在登陆页面中,第一次调用微博登陆可以正常,第二次调用时接收不到回调。
场景:程序内多个地方调用三方登录,进行封装,以单例的模式在一个特有类中持有。
原代码大概:
public class OpenAccountHolder {
public static SsoHandler getWBLogin(Activity activity){
if (mSsoHandler == null){
synchronized (OpenAccountHolder.class){
AuthInfo mAuthInfo = new AuthInfo(activity, Constants.WEIBO_APPKEY, Constants.URL_REDIRECT, Constants.SCOPE);
mSsoHandler = new SsoHandler(activity, mAuthInfo);
}
}
return mSsoHandler;
}
public static IWeiboShareAPI getWBShare(){
}
public static Tencent getTencent(){
}
public static IWXAPI getWXApi(){
}
}
在实际使用中发现,在同样的登陆页面,第一次调用微博登陆正常,回调正常运行,但是登出再登陆的时候,调用正常,但是接收不到回调。
解决:
public static SsoHandler getWBLogin(Activity activity) {
if (mSsoHandler != null) {
mSsoHandler = null;
}
AuthInfo mAuthInfo = new AuthInfo(activity, Constants.WEIBO_APPKEY, Constants.URL_REDIRECT, Constants.SCOPE);
mSsoHandler = new SsoHandler(activity, mAuthInfo);
return mSsoHandler;
}
微博登陆跟页面绑定,每次使用时候使用的activity参数应该是当前页面。不能使用之前的单例。
大概是这个样子,还在研究,暂记。
网友评论