尝试从OAuth获取令牌,得到:“UnhandledPromiseRejectionWarning:Error:redirect_uri_mismatch”

cbwuti44  于 2023-11-16  发布在  其他
关注(0)|答案(2)|浏览(110)

我尝试在NodeJs中使用硬编码方法获取OAuth令牌。我已经按照以下文章的说明从https://developers.google.com/oauthplayground/中检索了MATRIORIZATION_CODE:https://medium.com/@nickroach_50526/sending-emails-with-node-js-using-smtp-gmail-and-oauth2-316fe9c790a1
到目前为止,当我试图交换访问和刷新令牌的授权代码时,OAuth的Playground返回给我一个HTTP 500。所以我尝试了另一种方法,包括创建一个注定要记录我的令牌的程序。因此,我可以在其他应用程序中使用它们。
这里是我的片段:

const {google} = require('googleapis');
const app= require("express")();

const oauth2Client = new google.auth.OAuth2(
  "CLIENT_ID",
  "CLIENT_SECRET",
  "REDIRECT_URI"
);

app.get("/getToken", async (req,res)=>{
    const tokens = await oauth2Client.getToken(
        "AUTHORIZATION_CODE"
    )
    console.log("tokens: ", tokens)

    oauth2Client.setCredentials(tokens);
    res.send(tokens, oauth2Client)
})

字符串
当我启动程序时,我的控制台返回:“UnhandledPromiseRejectionWarning:Error:redirect_uri_mismatch at Gaxios._request”。
我不明白为什么,因为我的重定向的用户界面是有效地进入我的https://console.developers.google.com/apis/credentials/oauthclient/Id.com?project=Project_Name的页面。
如果要以硬编码的方式检索令牌,我缺少什么?

a7qyws3x

a7qyws3x1#

我在这里也遇到了同样的问题。通过反复试验,我发现如果你使用generateAuthUrl()方法来生成它,你需要提供给generateAuthUrl()方法相同的uri。

ctzwtxfj

ctzwtxfj2#

您需要为函数getToken使用另一个签名,在该函数中传递一个带有代码和redirect_uri的对象

let { tokens } = await oauth2Client.getToken({
   code,
   redirect_uri: "http://localhost:3000/oauth2callback",
 });

字符串

相关问题