我正在尝试使用 oauth 针对 Reddit 帐户对我的第三方应用程序进行身份验证。
我首先到达了这个端点
让授权网址 = https://www.reddit.com/api/v1/authorize?client_id=${redditClientId}&response_type=code&state=${state}&redirect_uri=${oAuthCallbackURL}&duration=permanent&scope=${scopes}
;
然后我收到了一个代码到我的回调 url
然后我像这样点击下一个端点:
let accessTokenUrl = `https://www.reddit.com/api/v1/access_token`;
let accessTokenRequest = new URLSearchParams();
accessTokenRequest.append("grant_type", "authorization_code");
accessTokenRequest.append("code", code);
accessTokenRequest.append("redirect_uri", oAuthCallbackURL);
let redditClientId = process.env.REDDIT_CLIENT_ID;
let redditSecret = process.env.REDDIT_SECRET;
const clientIdAndSecretBase64 =
Buffer.from(`${redditClientId}:${redditSecret}`).toString('base64');
try {
let authorizationCodeResponse = await axios.post(accessTokenUrl, accessTokenRequest, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': `Basic ${clientIdAndSecretBase64}`
}
});
let { data } = authorizationCodeResponse;
console.log(authorizationCodeResponse);
console.log(`Reddit OAUTH Response=${JSON.stringify(data, null, 2)}`);
} catch (e) {
console.log(e);
}
但我一直得到的只是这个错误:
Reddit OAUTH 响应={“错误”:“无效授权”}
在仔细观察 Reddit 文档时,我看到一条线说invalid_grant
只有在
该代码已过期或已被使用
这没有任何意义,因为在测试阶段我忘记保存访问令牌。我应该可以随时重新发起这个请求。为什么会有这个限制?在保存访问令牌之前,我真的想看看响应是什么样的。现在,显然似乎没有办法解决这个问题。
但任何洞察力将不胜感激。