使用linqtotwitter进行流API的授权错误

时间:2016-05-09 20:48:27

标签: c# twitter twitter-streaming-api linq-to-twitter

我试图使用LinqToTwitter库和下面的c#代码获取推文流,但是我收到了这个错误:

  

错误401未经授权

public static SingleUserAuthorizer auth;
    static void Main(string[] args)
    {
        Task task = new Task(getStreamOfTweets);
        task.Start();
        task.Wait();
        Console.ReadLine();
    }

    static async void getStreamOfTweets()
    {
        auth = new SingleUserAuthorizer
        {
            CredentialStore = new SingleUserInMemoryCredentialStore
            {
                ConsumerKey = CUSTOMER_KEY,
                ConsumerSecret = CUSTOMER_SECRET,
                AccessToken = ACCESS_TOKEN,
                AccessTokenSecret = ACCESS_TOKEN_SECRET
            }
        };
        var context = new TwitterContext(auth);
        int count = 0;
        await (from strm in context.Streaming
               where strm.Type == StreamingType.Filter
               && strm.Track == "federer"
               select strm)
            .StartAsync(async strm =>
            {
                string message =
                    string.IsNullOrEmpty(strm.Content) ?
                        "Keep-Alive" : strm.Content;
                Console.WriteLine(
                    (count + 1).ToString() +
                    ". " + DateTime.Now +
                    ": " + message + "\n");

                if (count++ == 5)
                    strm.CloseStream();
            });
    }

备注:

  • twitter app中的权限是"读取,写入和访问直接消息"

  • 我可以通过REST API正确发送推文

4 个答案:

答案 0 :(得分:0)

请查看LINQ to Twitter FAQ,其中有关于解决401错误的广泛部分。也就是说,如果它正在为REST API而不是Streaming工作,那么可能会缩小要尝试的选项范围。以下是一些值得尝试的事情:

  1. 仔细检查按键,确保没有意外添加空格或在两端丢失字符。
  2. 再次尝试之前请花一点时间,因为有时太多次访问或尝试失败可能会导致他们在一段时间内拒绝您的连接。
  3. Re:#2,尝试其他流,例如Sample。
  4. 使用OAuth时有很多活动部分,所以如果您可能遗漏了某些内容,请通过该列表。

答案 1 :(得分:0)

发生此问题是因为窗口的时间错误。

答案 2 :(得分:0)

如果你复制了&从Linq" Twitter示例代码中粘贴,确保您已正确设置所有密钥:

.sort_values

然后不要使用"仅限申请" auth,使用" user auth"而是使用所有上述键的流式传输。

答案 3 :(得分:0)

问题是因为PC中的时间是错误的