【问题标题】:How to update status on twitter using C# and LINQ to Twitter library如何使用 C# 和 LINQ to Twitter 库更新 Twitter 上的状态
【发布时间】:2012-07-02 17:00:21
【问题描述】:

我正在编写一个 Metrol 风格的应用程序来更新我的 Twitter 上的状态。我使用 LINQ to Twitter 库。但我不明白为什么我的应用程序会抛出异常 401 Unauthorized。这是我的代码:

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";
    }
}

【问题讨论】:

  • 无论如何以您现在这样做的方式连接字符串。请改用String.Format("Status returned: ({0}), {1}, {2}", ...)
  • 您在此处公开发布了您的凭据,这是不安全的。如果您可以通过dev.twitter.com 访问您的应用并重新生成您的令牌,那就太好了。

标签: c# twitter exception-handling http-status-code-401 linq-to-twitter


【解决方案1】:

我刚刚发布了一篇关于在 Windows 8 中通过 LINQ to Twitter 使用 OAuth 的博客文章:

http://geekswithblogs.net/WinAZ/archive/2012/07/02/using-linq-to-twitter-oauth-with-windows-8.aspx

我还在此处的 LINQ to Twitter 文档中包含了 401 常见问题解答:

http://linqtotwitter.codeplex.com/wikipage?title=LINQ%20to%20Twitter%20FAQ&referringTitle=Documentation

【讨论】:

    【解决方案2】:

    您可以使用 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;
        }
    

    希望这会有所帮助。 如果有任何澄清,请提出。谢谢

    【讨论】:

    • 谢谢您的回答。但是如何将 Twitterizer 程序集添加到我的 Metrol Style 应用程序中?
    猜你喜欢
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多