android - 我是否每次都必须遵循 OAuth 工作流程(请求 token -> 访问 token -> API 调用)?

标签 android twitter-oauth twitter4j

好吧,我是 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/

相关文章:

android - 如何从 fragment 切换到对话 fragment

Android - 关于postDelayed和Threads的问题

java - 根据位置和跟踪关键字过滤推文

android - 方法 retrieveRequestToken 引发 "Communication with the service provider failed: null"

javascript - Zapier 代码 (JS) + Twitter API - POST 状态/转推/:id

java - 如何在 Twitter4J 中设置消费者 key / secret 对?

java - Android 新手,如何初始化 fragment 内元素的事件处理程序

java - 找不到 : org. gradle.api.internal.artifacts.ivyservice.ivyresolve.VersionInfo(java.lang.String) 的匹配构造函数

json - 无法从 Postman 连接到 Twitter API

node.js - 如何在 Twitter 中注册 webhook url?