2013-03-30 29 views
0

我試圖寫一個應用程序,可以在Twitter使用「應用」我與Twitter註冊。我使用TweetSharp並試圖如下讓我的TwitterService設置:.NET - 更新狀態(鳴叫)到沒有PIN或真正的回調url的Twitter?

public Twitter(string consumerKey, string consumerSecret) 
    { 
     this.twitterService = new TwitterService(consumerKey, consumerSecret); 
     OAuthRequestToken oAuthRequestToken = this.twitterService.GetRequestToken(); 
     Uri uri = this.twitterService.GetAuthorizationUri(oAuthRequestToken); 
     Process.Start(uri.ToString()); 
     OAuthAccessToken oAuthAccessToken = 
      this.twitterService.GetAccessToken(oAuthRequestToken); 
     this.twitterService 
      .AuthenticateWith(oAuthAccessToken.Token, oAuthAccessToken.TokenSecret); 
    } 

它到達OAuthAccessToken行,然後帶我到授權[我的應用程序]使用您的帳戶?在Twitter網站上的頁面。在我指定假冒回調網址之前,它顯示了一個頁面,其中包含用戶在點擊「授權應用」按鈕時應該輸入的PIN碼。然後,當我添加了一個假的回調URL,它會試圖進入該頁面,我的代碼將打擊與以下錯誤成碎片:

The remote server returned an error: (401) Unauthorized.

我想知道的是:我可以在Twitter編程,而不需要輸入PIN碼還是有合法的回叫網址?

回答

1

鳴叫必須在用戶的上下文中被髮送。 (編號:POST statuses/update)因此,你的應用程序必須爲了得到用戶的授權(OAuth訪問令牌)發送鳴叫。由於不使用基於PIN的身份驗證或回調URL都無法獲取訪問令牌,所以恐怕您所提的問題根本無法完成。

但是,如果您只是想避免每次啓動應用程序時提示您的用戶輸入PIN碼,那麼答案很簡單:一旦您擁有有效的訪問令牌,將其保存在某處(例如文件)然後在您的應用下次運行時重新加載它。對於我的WinForms應用程序,我使用.NET內置的每用戶Settings機制來存儲訪問令牌和訪問令牌密鑰。一個網絡應用程序可能會更好使用數據庫或類似的持久訪問令牌。

注意:如果你這樣做,你還需要檢查存儲的訪問令牌的有效性,並重復授權過程,如果它不再有效。 Twitter API文檔建議爲此使用GET account/verify_credentials方法。

+0

我希望我能得到我的應用程序使用Twitter發送日誌消息。我聽說過物聯網設備發送推文(http://www.psfk.com/2012/01/tweeting-plants-water.html)。他們如何在沒有實際用戶的情況下襬脫困境? – lintmouse

+0

@垃圾房他們沒有。 http://www.botanicalls.com/archived_kits/twitter/該頁面表示設備發送推文需要Twitter賬號。 –

+0

必須使用Twitter帳戶不會成爲我的障礙。就好像用戶必須真正與它互動才能發送推文一樣。 – lintmouse