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

时间:2012-11-06 21:35:59

标签: android twitter-oauth twitter4j

好的,所以我是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。

我读到的任何地方我都相信我不应该再次完成整个令牌交换的事情了。我错了吗?

也许我应该只是存储Access Token和Access Token Secret并从头开始创建一个新对象而不是反序列化旧对象?

感谢您的帮助: - )

1 个答案:

答案 0 :(得分:2)

好的,我设法解决了我的问题,解决方法是:只保存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! :)");