向 Twitter API 发送请求时禁止(错误 403)
本文关键字:禁止 错误 请求 Twitter API | 更新日期: 2023-09-27 18:33:40
我想使用 GET statuses/home_timeline 获取推文列表。没有任何附加参数的我的资源 URL。当我发送请求时,我收到错误"禁止"。下面代码的一部分
public async Task<BindableCollection<Tweet>> Execute()
{
string uri = "https://api.twitter.com/1.1/statuses/home_timeline.json";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Host", "api.twitter.com");
client.DefaultRequestHeaders.Add("Authorization", info.TokenType + ' ' + info.AccessToken);
HttpResponseMessage responce = new HttpResponseMessage();
while (true)
{
try
{
responce = await client.GetAsync(uri);
break;
}
catch { Debug.WriteLine("ERROR!"); }
}
info.TokenType
和info.AccessToken
包含"持有者"和我的访问令牌符合。适当的照片
当我使用此参数(令牌类型和访问令牌)发送请求(GET状态/USER_timeline)时,我得到了正确的答案。
对此有什么想法吗?
你需要
区分HomeTimeline和UserTimeline。
- HomeTimeline 是当前经过身份验证的用户的时间线,因此您必须具有特定于用户的身份验证。 用户时间线
- 是特定用户的公共时间线,您可以使用仅应用程序身份验证。
Tweetinvi提供了对这两个的非常直接的访问:
var tweets = Timeline.GetHomeTimeline();
// OR
var tweets = Timeline.GetUserTimeline(<user_identifier>);
时间线文档
对于身份验证,您还需要 1 行:
// User authentication
Auth.SetUserCredentials("CONSUMER_KEY", "CONSUMER_SECRET", "ACCESS_TOKEN", "ACCESS_TOKEN_SECRET");
// Application-Only authentication
Auth.SetApplicationOnlyCredentials("CONSUMER_KEY", "CONSUMER_SECRET", true);
身份验证文档
让我知道这是否有任何帮助。
HOME_timeline需要用户身份验证,而不是应用程序身份验证,应用程序身份验证可以与User_timeline一起使用。是否偶然使用应用程序凭据进行身份验证?
从文档中:
"使用仅限应用程序的身份验证,您没有经过身份验证的用户的上下文,这意味着对需要用户上下文的端点(例如发布推文)的任何 API 请求都将不起作用。但是,仍然可用的终结点集可以具有更高的速率限制。
正如 Ian Nelson 所说,您需要授权才能访问您的时间线。但是你可以使用LinqToTwitter来获取推文列表。
var tweets = from tweet in twitterContext.Status
where tweet.Type == StatusType.User
&& tweet.ScreenName == "Goofy"
select tweet;