oauth - 来自AuthCode 的Snoowrap 请求者返回API 错误:invalid_grant - undefined
问题描述
我能够生成授权 url,并且代码成功返回到我的 express 端点。所有这些都是通过单独的方法完成的,我不会在这里展示 - 简单的快速路线。它们对代码没有影响。我已经从浏览器 cookie 中复制/粘贴了身份验证代码,并制作了一个简单调用这些函数的测试脚本:
const snoowrap = require('snoowrap');
module.exports = {
getAuthURL: async (managerId, modelId) => {
return snoowrap.getAuthUrl({
clientId: process.env.RDT_CLIENT,
scope: ['privatemessages', 'identity', 'read', 'submit'],
redirectUri: process.env.REDIRECT_URI,
permanent: false,
state: `${managerId}-${modelId}`
});
},
requester: async (token) => {
let s;
try {
s = await snoowrap.fromAuthCode({
code: token,
userAgent: process.env.RDT_AGENT,
clientId: process.env.RDT_CLIENT,
redirectUri: process.env.REDIRECT_URI,
clientSecret: process.env.RDT_SECRET,
});
} catch (err) {
if (err) {
console.log(err);
}
}
return s;
}
}
require('dotenv').config();
(async () => {
const requester = await require('./reddit/snoowrap').requester('<CODE GOES HERE>');
const me = await requester.getMe();
console.log(me);
})();
调用此函数会导致此错误:
RequestError: API Error: invalid_grant - undefined
我有一种感觉,我只是在这里犯了一个简单的错误。如果有比我更有经验的人能给我指路,我将永远感激不尽!
编辑:
取得了一些进展——即使我将其设置为永久,我也能够一次使用授权代码。我认为发生的事情是当我停止应用程序时,创建授权代码的 snoowrap 实例现在被销毁,留下一个无用的会话 cookie。谁能证实这一点?
编辑2:
我从 authUrl 制作了一个新的访问令牌,使用该令牌调用 snoowrap.me() 一次,使用 updateAccessToken() 方法更新令牌并将其设置为浏览器 cookie,并尝试将更新的令牌用于下一个请求它仍然在第二个函数调用时说 invalid_grant 。为什么??
解决方案
推荐阅读
- c++ - 将 kleene 运算符解析为一组备选方案,适配器?有精神 x3
- java - 按对象之一对数组列表中的对象进行排序
- python - “ImportError:无法从 PyQt5 导入名称 QtCore”或任何其他模块
- extjs - 如何使用 .remove() EXTJS 删除 2 个容器
- sql - 在 where 子句 oracle 中切换大小写
- python - Python:如何在图中获得更平滑的起点?
- javascript - 试图从 WKWebView 中的 Javascript 获取信息(使用 KINWebBrowser)
- python - 如何同时写入多个 TCP 套接字?
- php - 如何提交切换数据以通过 Ajax 在我的 mysql 中更改布尔值的状态?
- mongodb - 无法将类型“PersistEntityBackend a0”与“MongoContext”匹配——通过 ObjectId 获取文档