OAuth 概述:用户是他/她所说的他/她吗?:
我不确定您是否使用 OAuth 登录 Stack Overflow,例如“使用 Google 登录”选项,但是当您使用此功能时,Stack Overflow 只是询问 Google 是否知道您是谁:
“哟谷歌,这个 Vinesh 家伙声称 vinesh.e@gmail.com 是他,这是真的吗?”
如果您已经登录,Google 会说“是”。如果没有,谷歌会说:
“等一下 Stack Overflow,我会验证这个家伙的身份,如果他可以为他的 Google 帐户输入正确的密码,那么就是他”。
当你输入你的谷歌密码时,谷歌会告诉 Stack Overflow 你就是你所说的那个人,然后 Stack Overflow 会让你登录。
当您退出您的应用程序时,您将退出您的应用程序:
在这里,OAuth 的新开发人员有时会感到有些困惑……Google 和 Stack Overflow、Assembla、Vinesh 的非常酷的 webapp 都是不同的实体,而 Google 对您在 Vinesh 的酷 web 应用上的帐户一无所知,反之亦然反之亦然,除了通过您用来访问个人资料信息的 API 公开的内容。
当您的用户退出时,他或她并不是在退出 Google,而是在退出您的应用程序、Stack Overflow、Assembla 或任何使用 Google OAuth 对用户进行身份验证的 Web 应用程序。
事实上,我可以退出我所有的 Google 帐户,但仍然可以登录 Stack Overflow。一旦您的应用知道用户是谁,该用户就可以退出 Google。不再需要谷歌。
话虽如此,您要求做的是将用户从真正不属于您的服务中注销。可以这样想:作为用户,如果我使用 Google 帐户登录 5 个不同的服务,您认为我会有多生气,然后我第一次退出其中一个服务时,我必须登录我的 Gmail 帐户还是因为那个应用程序开发人员决定,当我退出他的应用程序时,我也应该退出谷歌?那真的会老得很快。总之,你真的不想这样做......
嗯嗯,不管怎样,我还是想把用户从谷歌注销,告诉我我该怎么做?
话虽如此,如果您仍然希望将用户从 Google 注销,并意识到您很可能会破坏他们的工作流程,您可以从他们的 Google 服务注销按钮之一动态构建注销 URL,然后使用一个 img 元素或一个脚本标签:
<script type="text/javascript"
src="https://mail.google.com/mail/u/0/?logout&hl=en" />
或者
<img src="https://mail.google.com/mail/u/0/?logout&hl=en" />
或者
window.location = "https://mail.google.com/mail/u/0/?logout&hl=en";
如果您将用户重定向到注销页面,或从不受跨域限制的元素调用它,用户将从 Google 注销。
请注意,这并不一定意味着用户将从您的应用程序中注销,只有 Google才会注销。:)
概括:
重要的是要记住,当您退出应用程序时,您不需要让用户重新输入密码。这就是重点!它针对 Google 进行身份验证,因此用户不必在他或她使用的每个 Web 应用程序中一遍又一遍地输入他或她的密码。这需要一些时间来适应,但要知道,只要用户登录 Google,您的应用程序就无需担心用户是否是他/她所说的那个人。
我在一个项目中与您有相同的实现,使用带有 OAuth 的 Google 个人资料信息。我尝试了你想要尝试的同样的事情,当人们不得不一遍又一遍地登录谷歌时,它真的开始让人们生气,所以我们停止将他们从谷歌中注销。:)