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

本文介绍了一种解决使用新浪微博开放平台开发应用时遇到的Authfailed问题的方法。该问题发生在利用SharedPreferences保存并重新加载AccessToken后。文章详细解释了问题的原因,并提供了一个简单的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自: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);

 

 



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值