2012-11-06 31 views
2

好吧,我是OAuth的新手,我正在创建一个与Twitter集成的应用程序。我是否每次都必须遵循OAuth工作流程(请求令牌 - >访问令牌 - > API调用)?

我正在使用Twitter4j并按照他们的指示。那里没有问题。

  • 我可以要求用户授权应用
  • 我交换请求令牌访问令牌
  • 一旦用户athorizes应用程序序列化对象
  • 这里的序列化是如何发生的

    FileOutputStream fos = getContext().openFileOutput(fileName, Context.MODE_PRIVATE); 
    ObjectOutputStream oos = new ObjectOutputStream(fos); 
    oos.writeObject(accessToken); 
    oos.close(); 
    

所以当它的时间使用访问令牌再次,我只是desiralize对象,然后分配到一个新的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

我到处看我确信我不应该再次通过整个令牌交换的事情。我错了吗?

也许我应该简单地存储访问令牌和访问令牌密钥,并从头开始创建一个新的对象,而不是反序列化一个旧的对象?

感谢您的帮助:-)

回答

2

好吧,我设法解决我的问题和解决的办法是:只保存令牌和令牌密钥,然后创建一个新的对象。

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! :)"); 
相关问题