【发布时间】:2021-10-19 06:20:42
【问题描述】:
Google 最近给我发了一封电子邮件,内容如下:
您的一个或多个网络应用程序使用旧版 Google Sign-In JavaScript 库。请在 2023 年 3 月 31 日之前将您的项目迁移到新的 Google 身份服务 SDK
有问题的项目使用 Google Drive API 以及现在的旧身份验证客户端。
迁移页面 (https://developers.google.com/identity/gsi/web/guides/migration) 上的表格显示:
| Old | New | Notes |
|---|---|---|
| JavaScript libraries | ||
| apis.google.com/js/platform.js | accounts.google.com/gsi/client | Replace old with new. |
| apis.google.com/js/api.js | accounts.google.com/gsi/client | Replace old with new. |
我目前在前端使用gapi 来执行从apis.google.com/js/api.js 加载的授权。根据表格,我需要用新库替换它。
我尝试了以下方法来验证和授权,就像我过去对 gapi 所做的那样:
window.google.accounts.id.initialize({
client_id: GOOGLE_CLIENT_ID,
callback: console.log,
scope: "https://www.googleapis.com/auth/drive.file",
discoveryDocs: ["https://www.googleapis.com/discovery/v1/apis/drive/v3/rest"],
});
window.google.accounts.id.renderButton(ref.current, {
size: "medium",
type: "standard",
});
但是,当我尝试使用 Google 登录按钮进行身份验证时,scope 字段不受尊重,并且它不会要求用户授权请求的范围。它也不会在回调的凭据响应中返回任何形式的访问令牌。
我不确定如何授权使用新库。
【问题讨论】:
-
这可能与它的身份登录使用配置文件、电子邮件的范围有关。您尝试做的是向其中添加 Oauth2 范围。我不确定它是为这种用途而设计的。
-
如果有办法在一个请求中完成所有操作但我现在正在做的是使用授权端点并使用登录提示询问用户,我将不回答这个问题批准范围,而无需他们再次选择他们的帐户。 developers.google.com/identity/protocols/oauth2/…
-
新的基于 gsi 的登录系统将提供包含用户 ID(子)、电子邮件、姓名和个人资料图片的令牌。还有什么需要注册/登录用户?
标签: javascript google-api google-oauth google-api-client google-identity