使用 linqtotwitter 进行流式传输的授权错误 api

authorization error using linqtotwitter for streaming api

我正在尝试使用 LinqToTwitter 库和下面的 c# 代码获取推文流,但出现此错误:

Error 401 Unauthorized

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();
            });
    }

备注:

请查看 LINQ to Twitter FAQ,其中包含有关解决 401 错误的详尽部分。也就是说,如果它适用于 REST API,但不适用于 Streaming,则可能会缩小尝试的范围。首先要尝试以下几件事:

  1. 仔细检查按键,确保您没有不小心添加 space 或在末尾丢失字符。
  2. 请稍等片刻再试,因为有时访问次数过多或尝试失败可能会导致他们在一段时间内拒绝您的连接。
  3. 回复:#2,试试另一个流,比如 Sample。
  4. 使用 OAuth 有很多变化的部分,因此请仔细阅读该列表以防您遗漏某些内容。

出现此问题是因为 windows 的时间错误。

如果您从 Linq"Twitter 示例代码复制并粘贴,请确保您已正确设置所有键:

  ConsumerKey 
  ConsumerSecret 
  AccessToken 
  AccessTokenSecret 

然后不要使用 "Application only" 身份验证,使用 "user auth" 代替使用上述所有密钥的流式传输。

问题是因为PC端的时序错误