Linq2Twitter - 401:错误的身份验证数据

时间:2014-03-03 11:47:59

标签: c# authentication twitter linq-to-twitter

我一直在使用Search API和Linq2Twitter(第2版) 我想切换到Stream API。我更新到第3版,但从那时起我不再进行身份验证了。我不认为Stream API或版本可能是问题,因为我试图回到以前的版本,以前的身份验证方法,它也不再工作。我得到401 : bad authentication data.

所以,这是我目前的代码:

     var auth = new SingleUserAuthorizer
          {

             CredentialStore = new SingleUserInMemoryCredentialStore()
             {
                ConsumerKey = ConfigurationManager.AppSettings["twitterConsumerKey"],
                ConsumerSecret = ConfigurationManager.AppSettings["twitterConsumerSecret"],
                OAuthToken = ConfigurationManager.AppSettings["twitterOAuthToken"],
                AccessToken = ConfigurationManager.AppSettings["twitterAccessToken"]
             }
           };

        TwitterContext _twitterCtx = new TwitterContext(auth);


        try
        {
            var verifyResponse =
                await
                    (from acct in _twitterCtx.Account
                     where acct.Type == AccountType.VerifyCredentials
                     select acct)
                    .SingleOrDefaultAsync();

            if (verifyResponse != null && verifyResponse.User != null)
            {
                User user = verifyResponse.User;

                Console.WriteLine(
                    "Credentials are good for {0}.",
                    user.ScreenNameResponse);
            }
        }
        catch (TwitterQueryException tqe)
        {
            Console.WriteLine(tqe.Message);
        }

当然,我多次检查凭证,打印出来然后全部。 我尝试使用ApplicationOnlyAuthorizer,v.2,v.3,它不会改变任何东西。 最让我害怕的是,以前工作的东西(v2 + ApplicationOnly + Search API)也不起作用。

通过我的研究,我听说过由不同步的时间戳或类似的问题引起的问题。但我不明白我怎么能改变这一点。 该程序不在服务器上,而是在本地存储。

感谢您的阅读。

1 个答案:

答案 0 :(得分:3)

以下是在v3.0中使用SingleUserAuthorizer的方法:

        var auth = new SingleUserAuthorizer
        {
            CredentialStore = new SingleUserInMemoryCredentialStore
            {
                ConsumerKey = ConfigurationManager.AppSettings["consumerKey"],
                ConsumerSecret = ConfigurationManager.AppSettings["consumerSecret"],
                AccessToken = ConfigurationManager.AppSettings["accessToken"],
                AccessTokenSecret = ConfigurationManager.AppSettings["accessTokenSecret"]
            }
        };

请注意,我正在设置AccessToken和AccessToken的秘密。我还有一个常见问题解答,提出了解决401问题的建议:

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