4

我正在编写一个 Metrol Style 应用程序来更新我的 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";
    }
}
4

2 回答 2

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 FAQ:

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

于 2012-07-02T19:50:02.490 回答
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;
    }

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

于 2012-07-02T10:05:06.193 回答