我正试图使用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应用程序中的权限是"读取、写入和访问直接消息"
我可以通过REST API正确获取推特
请查看LINQ to Twitter常见问题解答,其中有一个关于解决401个错误的详细部分。也就是说,如果它适用于REST API,但不适用于流式处理,则可能会缩小尝试的范围。这里有几件事需要首先尝试:
- 仔细检查关键点,确保没有意外添加空格或在末尾丢失字符
- 请稍等片刻再重试,因为有时访问次数过多或尝试失败可能会导致他们在一定时间内拒绝您的连接
- 回复:#2,试试另一个流,比如Sample
- 使用OAuth有很多活动部分,所以请仔细查看该列表,以防您遗漏了什么
发生此问题是因为窗口的时间错误。
如果您复制了&粘贴自Linq"Twitter示例代码,确保您已正确设置所有密钥:
ConsumerKey
ConsumerSecret
AccessToken
AccessTokenSecret
然后不要使用"Application only"auth,而是使用"user auth"进行流式传输,因为流式传输使用了以上所有密钥。
问题是因为PC中的定时是错误的