新浪微博开发保存的access_token不能继续使用的解决办法

转自:http://blog.sina.com.cn/s/blog_5de73d0b01014k87.html


在使用新浪微博开放平台进行项目开发的时候,会遇到这样的情况。

 

当用户第一次登录成功之后,为了让用户在下次启动应用时无须再进行登录,

此时需要把Access Token保存到SharedPreferences中,当启动应用时,

把Access Token从SharedPreferences读取出来,并设置到Weibo类中,随后

的操作中,就可以随意request了。

 

但是,有个问题时,很多人使用上面方法的时候,都会出现Auth failed的情况。

 

如:

已经通过隐式授权获取到了AccessToken,然后如下保存了access_token

 

sp.edit().putString("sina_access_token",token).commit();

 

在下次登录时,我就从SharedPrefence里取出access_token,然后构造AccessToken对象

AccessToken accessToken = newAccessToken(sp.getString("sina_access_token", ""),CONSUMER_SECRET);

Weibo.getInstance().setAccessToken(accessToken);

 

然后使用Weibo对象去调用request(.... ,mWeibo.getAccessToken)。

 

但是,这样子不行!会出现“Auth failed!”提示。

 

-------------------------------------

 

下面是原因和解决方法

 

在android4weiboSDK中,有个地方,if判断写的不太好,把accessToken给跳过了,没有写到header里面。

错误的位置在Utility类中的140行左右

if (!isBundleEmpty(authParam) &&mAuth != null) {
    ......

   ......
}

mauth为空,就会使accessToken不能写入header
只需要在前面加个set方法,是mauth不为空就好了
Utility.setAuthorization(new Oauth2AccessTokenHeader());
//防止mAuth为null,导致21301的error

就是说,在设置Access Token之前加上那句代码就可以了,如下:

 

Utility.setAuthorization(newOauth2AccessTokenHeader());

AccessToken accessToken = newAccessToken(sp.getString("sina_access_token", ""),CONSUMER_SECRET);

Weibo.getInstance().setAccessToken(accessToken);

 

 



你可能感兴趣的:(新浪微博,header,null,Access,token,开放平台)