在我的应用程序中,我使用 jsapi 实现了 Google 退出。
我使用 url https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=xxxxxx 连接到 Google,然后 https://www.googleapis.com/plus/v1/people/xxxxxx 获取用户数据来自谷歌个人资料。
现在我需要在单击我的应用程序中的按钮时从 Google 注销用户。我如何在 JavaScript 中实现它,或者至少它必须在每次用户登录时询问 Google 登录页面。
我试过 approval_prompt=force
,但似乎没有用。
原文由 Vinesh EG 发布,翻译遵循 CC BY-SA 4.0 许可协议
OAuth 概述:用户是他/她所说的那个人吗?:
我不确定您是否使用 OAuth 登录 Stack Overflow,例如“使用 Google 登录”选项,但是当您使用此功能时,Stack Overflow 只是询问 Google 是否知道您是谁:
如果您已经登录,Google 会说是。如果没有,谷歌会说:
当你输入谷歌密码时,谷歌会告诉 Stack Overflow 你是你所说的人,然后 Stack Overflow 会让你登录。
当您注销您的应用程序时,您将退出 您的 应用程序:
刚接触 OAuth 的开发人员有时会在这里感到困惑……Google 和 Stack Overflow、Assembla、Vinesh 的非常酷的 slick-webapp 都是不同的实体,而 Google 对您在 Vinesh 的酷 webapp 上的帐户一无所知,副相反,除了通过您用来访问个人资料信息的 API 公开的内容之外。
当您的用户退出时,他或她并没有退出 Google,他/她正在退出您的应用程序、Stack Overflow、Assembla 或任何使用 Google OAuth 来验证用户身份的 Web 应用程序。
事实上,我可以注销我所有的 Google 帐户并仍然登录到 Stack Overflow。一旦您的应用知道用户是谁,该用户就可以退出 Google。不再需要谷歌。
话虽如此,您要求做的是将用户从真正不属于您的服务中注销。想一想:作为用户,如果我使用我的 Google 帐户登录了 5 个不同的服务,然后我第一次注销其中一个服务时,您认为我会有多恼火,我必须登录我的 Gmail 帐户又是因为那个应用程序开发人员决定,当我退出他的应用程序时,我也应该退出谷歌?那会很快变老的。简而言之,你 真的不想这样做……
是的,无论如何,我仍然想将用户从 Google 中注销,请告诉我该怎么做?
话虽如此,如果您 仍然 想让用户退出 Google,并且意识到您很可能会扰乱他们的工作流程,您可以从他们的 Google 服务注销按钮之一动态构建注销 url,然后使用调用它img 元素或脚本标签:
或者
或者
如果您将用户重定向到注销页面,或从不受跨域限制的元素调用它,用户将退出 Google。
请注意,这并不一定意味着用户将退出 您的 应用程序,只是谷歌。 :)
概括:
重要的是要记住,当您注销应用程序时,您不需要让用户重新输入密码。这就是重点!它针对 Google 进行身份验证,因此用户不必在他或她使用的每个 Web 应用程序中一遍又一遍地输入他或她的密码。这需要一些时间来适应,但要知道,只要用户登录到 Google,您的应用程序就不需要担心用户是否是他/她所说的那个人。
我在一个项目中有与您相同的实现,使用带有 OAuth 的 Google 个人资料信息。我尝试了与您想要尝试的完全相同的事情,当人们不得不一遍又一遍地登录 Google 时,这真的开始让他们生气,所以我们停止让他们退出 Google。 :)