Reddit API 返回 HTTP 403

nag*_*lzs 5 reddit oauth2

按照https://github.com/reddit/reddit/wiki/OAuth2 中描述的 OAuth2 登录流程,我到了 POST 到https://www.reddit.com/api/v1/access_token返回类似内容的地步这个:

{'token_type': 'bearer', 'expires_in': 3600, 'scope': 'identity', 'access_token': '*****'}
Run Code Online (Sandbox Code Playgroud)

然后我做

GET  https://oauth.reddit.com/api/v1/me
Run Code Online (Sandbox Code Playgroud)

有了这个标题:

Authorization: bearer *****
Run Code Online (Sandbox Code Playgroud)

响应是 HTTP 403 Unauthorized。但为什么?很明显,访问令牌具有“身份”范围。还记录了 /api/v1/me 调用仅需要此范围。(见https://www.reddit.com/dev/api/oauth#GET_api_v1_me

那么为什么我会收到 http 403 呢?

ne1*_*10s 5

我遇到了与您描述的完全相同的问题。就我而言,我通过在请求标头中403添加人造用户代理字符串来解决该问题。

就我而言,使用HttpClientC# 的过程如下:

using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Add("User-Agent", "MockClient/0.1 by Me");
    ...
}
Run Code Online (Sandbox Code Playgroud)

  • 这就是我的问题的解决方案!我一直在使用 Postman,但不是我自己的脚本,我想是因为 postman 自动填充了 User-Agent 标头。 (2认同)