当尝试使用Linq来推特时,401

本文关键字:Linq | 更新日期: 2023-09-27 18:07:04

所以我看了所有的建议从Linq到Twitter文档关于401状态与Oauth,我真的不知道我做错了什么。

var auth = new PinAuthorizer
        {
            Credentials = new InMemoryCredentials
            {
                ConsumerKey = ConfigurationManager.AppSettings["twitterConsumerKey"],
                ConsumerSecret = ConfigurationManager.AppSettings["twitterConsumerSecret"],
                //OAuthToken = ConfigurationManager.AppSettings["twitterOAuthToken"], //don't include this 
                //AccessToken = ConfigurationManager.AppSettings["twitterAccessToken"] //or this for new users. 
            },
            //
            UseCompression = true,
            GoToTwitterAuthorization = pageLink => Process.Start(pageLink),
            GetPin = () =>
                {
                    Console.WriteLine("/nAfter twitter authorizes your application you will be returned here or something/n");
                    Console.Write("Enter Pin here:");
                    return Console.ReadLine();
                }
        };
        auth.Authorize();

        using (var twitterCtx = new TwitterContext(auth, "https://api.twitter.com/1/",
            "https://search.twitter.com/"))
        {
            try
            {
                twitterCtx.Log = Console.Out;
                Console.WriteLine("Please provide tweet text");
                string tweet = Console.ReadLine();
                twitterCtx.UpdateStatus(tweet);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

        }

我已经使用Pin身份验证方法以及单用户方法(提供配置文件的oauth密钥)运行了这个。我能够查询推文,但我不能更新我的状态或发送直接消息(我收到403禁止当我试图DM)。我提供了一个回调URL(尽管是假的),所以我想不出为什么这不起作用。如有任何帮助,不胜感激。

PS这在Main中运行,不确定是否重要

当尝试使用Linq来推特时,401

你所需要的就是这个重载TwitterContext函数,它将使用适当的基本url:

new TwitterContext(auth)

您正在使用的示例是1.0版本的url,而LINQ to Twitter现在在Twitter API v1.1上。它将默认为正确的基本url。

如果你正在查询,但在更新和DM上出现错误,请仔细检查以确保你没有试图推同样的文本。这就是为什么我附加了一个DateTime。现在到测试推文的最后-保证唯一性。