使用 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();
});
}
备注:
twitter 应用程序中的权限是 "Read, Write and Access direct messages"
我可以通过 REST API 正确获取推文
请查看 LINQ to Twitter FAQ,其中包含有关解决 401 错误的详尽部分。也就是说,如果它适用于 REST API,但不适用于 Streaming,则可能会缩小尝试的范围。首先要尝试以下几件事:
- 仔细检查按键,确保您没有不小心添加 space 或在末尾丢失字符。
- 请稍等片刻再试,因为有时访问次数过多或尝试失败可能会导致他们在一段时间内拒绝您的连接。
- 回复:#2,试试另一个流,比如 Sample。
- 使用 OAuth 有很多变化的部分,因此请仔细阅读该列表以防您遗漏某些内容。
出现此问题是因为 windows 的时间错误。
如果您从 Linq"Twitter 示例代码复制并粘贴,请确保您已正确设置所有键:
ConsumerKey
ConsumerSecret
AccessToken
AccessTokenSecret
然后不要使用 "Application only" 身份验证,使用 "user auth" 代替使用上述所有密钥的流式传输。
问题是因为PC端的时序错误
我正在尝试使用 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();
});
}
备注:
twitter 应用程序中的权限是 "Read, Write and Access direct messages"
我可以通过 REST API 正确获取推文
请查看 LINQ to Twitter FAQ,其中包含有关解决 401 错误的详尽部分。也就是说,如果它适用于 REST API,但不适用于 Streaming,则可能会缩小尝试的范围。首先要尝试以下几件事:
- 仔细检查按键,确保您没有不小心添加 space 或在末尾丢失字符。
- 请稍等片刻再试,因为有时访问次数过多或尝试失败可能会导致他们在一段时间内拒绝您的连接。
- 回复:#2,试试另一个流,比如 Sample。
- 使用 OAuth 有很多变化的部分,因此请仔细阅读该列表以防您遗漏某些内容。
出现此问题是因为 windows 的时间错误。
如果您从 Linq"Twitter 示例代码复制并粘贴,请确保您已正确设置所有键:
ConsumerKey
ConsumerSecret
AccessToken
AccessTokenSecret
然后不要使用 "Application only" 身份验证,使用 "user auth" 代替使用上述所有密钥的流式传输。
问题是因为PC端的时序错误