cod*_*ead 5 google-oauth google-api-js-client google-identity-toolkit google-signin google-identity
如何使用新系统 (GIS) 获取刷新的 ID 令牌?
我有一个网络应用程序,它使用 Google 登录并将 id_token 发送到我的服务器以使用某些 GCP 服务。我按以下方式使用 GAPI Signin2/auth2:
gapi.client.init(API_KEY, OAUTH_CLIENT_ID, SCOPES), SCOPES 只有 userinfo.email 和个人资料gapi.auth2.getAuthInstance().currentUser.get()(如果用户未登录,则呈现登录按钮)currentUser.hasGrantedScopes(SCOPES):
gapi.client.getToken()这会给我一个{ id_token, access_token }在我的 NodeJS 服务器上,我将使用 google-auth-library 中的 OAuth2Client:
使用创建一个新的 OAuth2Client 实例new OAuth2Client(OAUTH_CLIENT_ID)
当客户端发送请求时,从凭据中提取 id_token 并调用:
oauthClient.verifyIdToken({ idToken: idToken, 受众: OAUTH_CLIENT_ID, })
在此结果上调用 getPayload() 将为我提供用户的 Google id,然后我可以用它来存储由它键入的数据等。
当服务器发现id_token已过期时,会因verifyIdToken()而出错。
客户端将捕获令牌过期错误并通过执行以下操作发出刷新:
authInstance.currentUser.get().reloadAuthResponse()====
好吧,现在 Google 表示他们将在新库(Google Identity Services)中弃用 Signin2,并表示我们都应该迁移到它。
我已经弄清楚如何进行客户端登录,并且它更容易且代码更少 - 太棒了!
这很简单:
我不知道如何在服务器端处理事情。如何使用新系统 (GIS) 获取刷新的 ID 令牌?迁移指南说应该删除 reloadAuthResponse() ,因为
ID 令牌已取代 OAuth2 访问令牌和范围。
但事实是,ID 令牌仍然会在某个时候过期,不是吗?
我究竟做错了什么?我应该如何迁移我的服务器代码以使用新的 id_token 来验证用户的身份并提取它?我应该停止在服务器上使用 OAuth2Client 并使用其他库吗?
| 归档时间: |
|
| 查看次数: |
2407 次 |
| 最近记录: |