好吧,我是 OAuth 新手,我正在创建一个与 Twitter 集成的应用程序。
我正在使用 Twitter4j 并遵循他们的说明。没有问题。
- 我可以要求用户授权我的应用
- 我用请求 token 交换访问 token
- 一旦用户授权应用程序,我就会序列化该对象
以下是序列化的发生方式
FileOutputStream fos = getContext().openFileOutput(fileName, Context.MODE_PRIVATE); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(accessToken); oos.close();
因此,当需要再次使用访问 token 时,我只需对该对象进行反序列化,然后分配给一个新的 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。
无论我读到什么,我都确信我不应该再次经历整个代币交换的事情。我错了吗?
也许我应该简单地存储访问 token 和访问 token key 并从头开始创建一个新对象,而不是反序列化旧对象?
感谢您的帮助:-)
最佳答案
好的,我成功解决了我的问题,解决方案是:仅保存 Token 和 Token Secret,然后创建一个新对象。
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! :)");
关于android - 我是否每次都必须遵循 OAuth 工作流程(请求 token -> 访问 token -> API 调用)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13259818/