2012-11-06 28 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! :)"); 
相關問題