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



好吧,我是新来的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! :)");

最新更新