好吧,我是新来的Oauth,我正在创建一个与Twitter集成的应用。
我正在使用Twitter4J并按照他们的说明。那里没有问题。
- 我可以要求用户授权我的应用
- 我将请求令牌交换为访问令牌
- 用户插入应用程序后,我将对象序列化
-
以下是序列化发生的方式
FileOutputStream fos = getContext().openFileOutput(fileName, Context.MODE_PRIVATE); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(accessToken); oos.close();
因此,当需要再次使用访问令牌时,我只是希望对象,然后分配给新的Twitter对象并调用状态更新,如下:
AccessToken twitterToken = objectDeserialization();
Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(twitterApiKey, twitterApiSecret);
twitter.setOAuthAccessToken(twitterToken);
twitter4j.Status status = twitter.updateStatus("This is sparta! :)");
问题是我得到了401。
到处阅读,我确信我不应该再次经历整个代币交换。我错了吗?
也许我应该简单地存储访问令牌和访问令牌秘密,然后从头开始创建一个新对象,而不是对旧对象?
感谢您的帮助: - )
好吧,我设法解决了我的问题,解决方案是:仅保存令牌和令牌秘密,然后创建一个新对象。
AccessToken twitterToken = objectDeserialization();
Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(twitterApiKey, twitterApiSecret);
twitter.setOAuthAccessToken(new AccessToken(twitterToken.getToken(), twitterToken.getTokenSecret()));
twitter4j.Status status = twitter.updateStatus("This is sparta! :)");