首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Firebase云函数调用时,OAuth2访问令牌交换失败

从Firebase云函数调用时,OAuth2访问令牌交换失败
EN

Stack Overflow用户
提问于 2019-07-29 00:41:20
回答 1查看 1K关注 0票数 0

我在使用OAuth2授权码授权获取Discord的访问令牌时遇到了问题。通过从我的web应用程序发送以下请求,我能够成功获取令牌:

代码语言:javascript
运行
复制
const params = `client_id=${clientId}&client_secret=${clientSecret}&grant_type=authorization_code&code=${code}&redirect_uri=${redirect_uri}&response_type=code&scope=identify`;

fetch(`${apiUrl}/oauth2/token`, {
    method: 'POST',
    body: params,
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
    },
}).then(response => {
    console.log(response);
    return response.json();
}).then(json => {
    console.log(json);
}).catch(e => {
    console.log(`ERROR: ${e}`);
});

为了向我的Firebase应用程序注册我的用户,我按照回答this question中概述的步骤通过云函数请求访问令牌,下一步是创建一个自定义令牌,然后使用signInWithCustomToken向我的应用程序验证用户身份。

然而,当我在我的云函数中运行完全相同的代码片段时,我从Discord的OAuth2服务器得到的响应是:

代码语言:javascript
运行
复制
{
    error: 'invalid_request',
    error_description: 'Invalid "code" in request.'
}

我不确定这是什么意思。除非我遗漏了什么,否则我在两个请求中传递的code参数是相同的,我已经通过记录和比较两个请求确认了这一点。我认为这可能与运行函数的位置(某个谷歌服务器)有关,但我认为这应该没问题,因为我的client_idclient_secret是一样的?

EN

回答 1

Stack Overflow用户

发布于 2019-07-29 01:45:30

明白了。

结果是我发送了两次访问令牌交换请求(一次来自客户端,一次来自云函数),这导致云函数总是最后发送请求,并且由于第二个请求重用了第一个请求中的授权码,因此它被认为是无效的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57242935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档