首页 > 解决方案 > 在 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方法。我怎样才能做到这一点?

标签: javascriptnode.jsoauth-2.0google-oauthgoogle-signin

解决方案


您的脚本需要以与桌面应用程序相同的方式运行,并执行以下操作:

  • 根据授权代码流 (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 博客文章中有更多详细信息,以及您可以运行的代码示例......


推荐阅读