Node.js 中使用 Google API 的 OAuth 2.0
由于存在所有的异步、链接和所有其他 JS 技巧,即使是用 Javascript 完成简单的任务也会让人感到不知所措,至少对于像我这样的初学者来说是这样。
首先,我目前正在开发自己的应用程序,它是一个简单的比赛投注追踪器,用于追踪我的投注,并决定在应用程序中添加 OAuth 身份验证。为什么不呢?
我做的第一件事是在 Google 控制台中建立一个帐户,并为 OAuth 2.0 获取一些全新的凭证(客户端 ID 和客户端密钥)。
我一度搞不懂身份验证流程,因为里面全是令牌、密钥之类的。但深入研究后,我发现其实很简单,我开始欣赏谷歌是如何让这个过程变得如此简单,甚至可以说是优雅的。
我做的第一件事是获取 google api:
npm install googleapis
在实际程序中:
初始化api库并设置googleConfigs。
const { google } = require('googleapis');
const oauth2 = google.oauth2('v2');
const Oauth2Client = new google.auth.OAuth2(
process.env.GOOGLE_CLIENT_ID,
process.env.GOOGLE_CLIENT_SECRET,
process.env.GOOGLE_REDIRECT, // this must match your google api settings
);
所以基本上我要做的就是这三件事:
-
获取客户端的重定向 URL
-
该 URL 还包含一个代码,然后我使用它来获取令牌(如果用户登录到他们的 Google 帐户)
-
最后我使用令牌获取用户详细信息
步骤1:
function getConnectionUrl() {
return Oauth2Client.generateAuthUrl({
access_type: 'offline',
prompt: 'consent',
scope: defaultScope
});
}
//Call this function somewhere in the program to get URL:
//const url = getConnectionUrl();
步骤 2 和 3:
function getUserDetails(code) {
return Oauth2Client.getToken(code) //use code to get the token
.then(({ tokens }) => {
Oauth2Client.setCredentials(tokens); //add token to the Oauth credentials
})
.then(() => {
return oauth2.userinfo.get({ auth: Oauth2Client }); // get userinfo with the newly updated credentials
})
}
因此在主程序中,我使用 getConnectionUrl() 获取了一个连接 URL,然后它给了我 URL 中的代码,我将该代码传递给 getUserDetails() 以获取用户详细信息。
这就是我如何在我的应用程序中运行 OAuth 身份验证。
感谢阅读。期待您的反馈。
如果您想查看我的 repo,请点击这里链接:
如果您喜欢,请为其加星标。
PS:请在推特上关注我,我将不胜感激。@Nipeshkc
*更新*
使用 async-await 步骤 2 和 3 可以简化为 ::
function async getUserDetails(code) {
const {tokens} = await Oauth2Client.getToken(code);
Oauth2Client.setCredentials(tokens);
const usr_info = await oauth2.userinfo.get({auth: Oauth2Client});
return usr_info;
}
这看起来更简洁,并且异步等待似乎使用起来更直观。
文章来源:https://dev.to/nipeshkc7/oauth-2-0-with-google-api-in-node-js-48m1