仅从Google Signs In for Websites请求“openid”范围

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了仅从Google Signs In for Websites请求“openid”范围相关的知识,希望对你有一定的参考价值。

我正在将Google登录集成到我的网络应用中,但无论我指定什么,它都会在登录流程中显示警告:

要继续,Google会与[app name]分享您的姓名,电子邮件地址和个人资料照片。

我不需要或不需要我的用户的姓名,电子邮件地址或个人资料图片;我只需要一个token_id。我知道开发人员只想要电子邮件地址的similar question,并且解释说其他细节无论如何都可以从电子邮件地址中获得,但在这种情况下我也不想要电子邮件地址。

documentation之后,我设定了:

function login() {
  gapi.auth2.init({
    client_id: myClientIdHere,
    cookie_policy: 'none',
    fetch_basic_profile: false,    // <-- remove basic profile
    scope: 'openid',               // <-- request only openid
    ux_mode: 'redirect', // <-- using redirect to avoid popup blocker issues
    redirect_uri: myRedirectUriHere,
  }).then((GoogleAuth) => {
    GoogleAuth.signIn() // [etc]
  });
}

function init() {
  gapi.load('auth2', login);
}

检查网络请求表明这是指导用户:

https://accounts.google.com/o/oauth2/auth?redirect_uri=[myRedirectUri]&response_type=permission%20id_token&scope=openid&openid.realm=&client_id=[myClientId]&ss_domain=[myDomain]&fetch_basic_profile=false&gsiwebsdk=2

哪个看起来正确。我已经尝试调整该URL并手动导航到它,无论我改变它总是似乎显示警告。

在我的Google API控制台项目下,在凭据 - > OAuth同意屏幕 - > Google API范围内,我可以看到“电子邮件”,“个人资料”和“openid”都已列出,我找不到删除它们的任何选项。

我不知道当用户登录时它是否真的向我发送了该信息,但我想从登录屏幕中删除警告。

如何仅在登录时使用Google登录?如何阻止它向我提供个人资料/电子邮件地址信息?

答案

当您从Google获取访问令牌时,您可以使用openid范围调用userinfo端点并获取用户配置文件信息,因此即使您不需要电子邮件和配置文件信息,您仍然可以通过userinfo端点获取该信息[1]。

[1] https://developers.google.com/identity/protocols/OpenIDConnect#obtaininguserprofileinformation

以上是关于仅从Google Signs In for Websites请求“openid”范围的主要内容,如果未能解决你的问题,请参考以下文章

A Lightweight and Accurate Recognition Framework for Signs of X-ray Weld Images

Google BigQuery:仅从最新表中选择

如何仅从 google adword api 整合地理位置?

如何仅从 Google Photos 应用程序中选择图像? Android 谷歌照片意图

GetCurrent 用户仅从 Firebase Google 应用返回登录用户

使用 Google Cloud Functions Node JS 10 仅从特定存储桶目录复制事件驱动的文件