4

我正在編寫一個Metrol樣式應用程序來更新我的Twitter上的狀態。我使用LINQ to Twitter庫。但我不明白爲什麼我的應用程序拋出異常401未經授權。這裏是我的代碼:如何使用C#和LINQ到Twitter庫更新Twitter上的狀態

private void UpdateStatus() 
{ 
    // configure the OAuth object 
    var auth = new SingleUserAuthorizer 
    { 
     Credentials = new InMemoryCredentials 
     { 
      ConsumerKey = "ConsumerKey", 
      ConsumerSecret = "ConsumerSecret", 
      OAuthToken = "TwitterAccessToken", 
      AccessToken = "TwitterAccessTokenSecret" 
     } 
    }; 

    using (var twitterCtx = new TwitterContext(auth, "https://api.twitter.com/1/", "https://search.twitter.com/")) 
    { 
     var tweet = twitterCtx.UpdateStatus("Hi everybody!"); // error here 

     viewTextBlock.Text = String.Empty; 
     viewTextBlock.Text = viewTextBlock.Text + "Status returned: " + 
              "(" + tweet.StatusID + ")" + 
              tweet.User.Name + ", " + 
              tweet.Text + "\n"; 
    } 
} 
+0

無論如何,你現在正在這樣做的方式連接字符串。改用'String.Format(「返回狀態:({0}),{1},{2}」,...)'。 – abatishchev

+1

你在這裏發佈了你的憑證,這是不安全的。如果您可以在http://dev.twitter.com上訪問您的應用程序並重新生成您的令牌,那就太好了。 –

回答

0

你可以使用Twitterizer程序集來實現它。 首先,您可以創建一個令牌,用於訪問Twitter,然後使用該特定令牌更新TwitterStatus(Twitterizer.Core.TwitterObject.TwitterStatus)。 示例代碼如下。

public void CreateCachedAccessToken(string requestToken) 
    { 
     string ConsumerKey = ConfigurationManager.AppSettings["ConsumerKey"]; 
     string ConsumerSecret = ConfigurationManager.AppSettings["ConsumerSecret"]; 

     OAuthTokenResponse responseToken = OAuthUtility.GetAccessToken(ConsumerKey, ConsumerSecret, requestToken); 

     //Cache the UserId 
     Session["GetCachedUserId"] = responseToken.UserId; 

     OAuthTokens accessToken = new OAuthTokens(); 
     accessToken.AccessToken = responseToken.Token; 
     accessToken.AccessTokenSecret = responseToken.TokenSecret; 
     accessToken.ConsumerKey = ConsumerKey; 
     accessToken.ConsumerSecret = ConsumerSecret; 

     Session["AccessToken"] = accessToken; 
    } 

要更新TwitterStatus,您可以按照以下步驟進行操作。

public OAuthTokens GetCachedAccessToken() 
    { 
     if (Session["AccessToken"] != null) 
     { 
      return (OAuthTokens)(Session["AccessToken"]); 
     } 
     else 
     { 
      return null; 
     } 
    } 

TwitterStatus.Update(GetCachedAccessToken(), txtTweet.Trim()); 

下面提到的方法可用於實現跡象。

protected string GetTwitterAuthorizationUrl() 
    { 
     string ConsumerKey = ConfigurationManager.AppSettings["ConsumerKey"]; 
     string ConsumerSecret = ConfigurationManager.AppSettings["ConsumerSecret"]; 

     OAuthTokenResponse reqToken = OAuthUtility.GetRequestToken(ConsumerKey, ConsumerSecret); 
     return "https://twitter.com/oauth/authorize?oauth_token=" + reqToken.Token; 
    } 

希望這有助於。 如果有任何澄清,請提出。由於

+0

謝謝你的回答。但是如何將Twitterizer組件添加到我的Metrol Style App? –

+0

您可以從http://www.twitterizer.net/downloads/ – Sugandika