我尝试在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
的页面。
如果要以硬编码的方式检索令牌,我缺少什么?
2条答案
按热度按时间a7qyws3x1#
我在这里也遇到了同样的问题。通过反复试验,我发现如果你使用
generateAuthUrl()
方法来生成它,你需要提供给generateAuthUrl()
方法相同的uri。ctzwtxfj2#
您需要为函数getToken使用另一个签名,在该函数中传递一个带有代码和redirect_uri的对象
字符串