Dav*_*man 9 javascript node.js google-oauth google-api-nodejs-client google-signin
我正在尝试为具有 Node.js 后端的 Web 应用程序实现 Google 登录和 API 访问。Google 的文档使用platform.js客户端和google-auth-library服务器端的组合提供了两个选项:
auth2.signIn()在客户端和verifyIdToken()服务器上。)auth2.grantOfflineAccess()在客户端上,它返回一个我可以getToken()在服务器上传递的代码。)我需要两者:我想通过 Google 登录验证用户;而且,我想建立服务器授权,因此它可以同时代表用户的工作。
我无法弄清楚如何使用单个身份验证流程来做到这一点。我能得到的最接近的是按顺序执行这两项操作:首先使用 对用户进行身份验证signIn(),然后(根据需要)通过 进行第二次传递grantOfflineAccess()。这是有问题的:
理想情况下,有一些变体signIn()将离线访问添加到初始身份验证流程中,并将代码与通常的令牌一起返回,但我什么也没看到。帮助?
(编辑:我在其他地方收到的一些建议是只实现流程 #2,然后使用安全 cookie 存储某种用户标识符,我在每个请求中检查用户帐户。我可以看到这可以正常工作,但基本上意味着我正在运行自己的登录系统,这似乎会增加我在关键系统中引入错误的机会。)
在身份验证(登录)时,您需要添加“离线”访问类型(默认为在线),这样您将获得一个刷新令牌,您可以使用该令牌稍后获取访问令牌,而无需进一步的用户同意/身份验证。您稍后不需要授予离线权限,只需在登录期间通过添加离线 access_type 即可授予离线权限。我不知道 platform.js 但使用了“passport” npm module 。我还使用了“googleapis”npm 模块/库,这是 Google 官方的。
https://developers.google.com/identity/protocols/oauth2/web-server
https://github.com/googleapis/google-api-nodejs-client
检查这个: https: //github.com/googleapis/google-api-nodejs-client#generate-an-authentication-url
编辑:您有一个服务器端,您需要代表用户工作。您还想使用 Google 进行登录。您只需要 #2 Google Sign-in 用于服务器端应用程序,为什么要同时考虑 #1 和 #2 选项。
根据您的要求,我可以认为#2是正确的方法。如果您只想登录,请使用电子邮件和个人资料(openid connect)等基本范围来识别用户。如果您希望用户委派权限(例如您希望在用户日历中自动创建事件),只需在登录期间添加离线 access_type 即可。您只能对注册用户使用登录,对新用户使用离线访问。
以上是单个身份验证流程。
| 归档时间: |
|
| 查看次数: |
287 次 |
| 最近记录: |