javascript - 在 Node.js 脚本中进行 Google 登录
问题描述
我想在我的 Node.js 脚本中集成 google 登录,这样我就可以记录谁使用了该脚本。
我可以在https://developers.google.com/identity/sign-in/web/sign-in的帮助下在网页中添加谷歌登录,但找不到在独立脚本中添加谷歌登录的方法。
让我试着解释一下我的意图
var googleSignIn = async function () {
// sign in using google account and return email addess on succesfull sign in
}
var work = async function () {
// step 1: log in first using google
var email = await googleSignIn()
// step 2: talk to backed server api on succesfull login
if (email) {
console.log('calling backend api')
} else {
console.log('you need to login first')
}
}
work().then(function () {
console.log('done')
}).catch(function (error) {
throw error
})
我想实现googleSignIn
方法。我怎样才能做到这一点?
解决方案
您的脚本需要以与桌面应用程序相同的方式运行,并执行以下操作:
- 根据授权代码流 (PKCE) 创建授权重定向 URL
- 打开系统浏览器,它将管理重定向和用户登录
- 通过 Loopback 或 Private URI Scheme 通知在您的应用中接收响应
- 响应包含一个授权码,需要交换令牌
- 然后,您可以使用访问令牌调用您的 API
典型的 URL 是这样的值:
https://accounts.google.com/oauth2/v2.0/authorize?
client_id=y792f434f
&response_type=code
&redirect_uri=com.mycompany.myapp:/callback
&scope=...
&state=...
&code_challenge=...
&code_challenge_method=S256
这是一个很难实现的流程 - 如果有用的话,我的桌面 OAuth 博客文章中有更多详细信息,以及您可以运行的代码示例......
推荐阅读
- c++ - 如何在 DirectInput8 中访问操纵杆数字键盘?
- python - 时间戳[ns] 时间戳[s] 有什么区别?
- java - XSLT 3.0 - 在 XSLT 3.0 xml-to-json() 中出现错误“重复键值”
- github - 自托管 GitHub Actions 运行器的 GitHub API 权限名称?
- r - R中的webshot.js问题
- pandas - 如何(正确)合并 2 个 Pandas DataFrames 和散点图
- reactjs - styled-components 条件动画性能问题
- django - Django注释外键的持续时间值的总和
- powershell - PowerShell 获取内容 -ReadCount
- reactjs - 在运行时从 kubernetes config 为已经构建器 docker react app 设置 process.env