谷歌oAuth没有';t从Google注销后使令牌字符串无效

谷歌oAuth没有';t从Google注销后使令牌字符串无效,oauth,google-oauth,Oauth,Google Oauth,我使用谷歌oAuth登录我的网站。这对于登录来说非常好。但它不适用于注销 我在下面做 从Google API获取idTokenString 把它放在我的会议上 通过GoogleIdTokenVerifier为每个请求验证此令牌 当用户执行以下操作时,google不会使令牌无效,而是发送成功响应 登录谷歌的用户 通过允许访问访问访问我的网站 用户从google注销 用户访问我的网站 我的系统发送令牌来验证它 谷歌给了我idToken,所以我的系统允许用户访问我的网站 当用户关闭浏览器并返回时,令牌

我使用谷歌oAuth登录我的网站。这对于登录来说非常好。但它不适用于注销

我在下面做

  • 从Google API获取idTokenString
  • 把它放在我的会议上
  • 通过GoogleIdTokenVerifier为每个请求验证此令牌
  • 当用户执行以下操作时,google不会使令牌无效,而是发送成功响应

  • 登录谷歌的用户
  • 通过允许访问访问访问我的网站
  • 用户从google注销
  • 用户访问我的网站
  • 我的系统发送令牌来验证它
  • 谷歌给了我idToken,所以我的系统允许用户访问我的网站

  • 当用户关闭浏览器并返回时,令牌无效,我的系统不允许。但如果不关闭浏览器,它将无法工作

    这是预期的行为。若用户从谷歌注销,它也不会从你们的应用程序中注销。 然而,如果您想从应用程序中注销用户,并希望google也被注销,则有一个解决方案。您只需通过编程方式清除浏览器中的所有cookie,或者您可以从其中一个Google服务注销按钮动态构建注销url,然后在应用程序中使用img元素或脚本标记调用该url

    <script type="text/javascript" 
        src="https://mail.google.com/mail/u/0/?logout&hl=en" />
    

    我没有从我的系统中注销,我只是依靠谷歌。请考虑一下这个场景。用户使用公共计算机访问我的网站,然后在不关闭浏览器的情况下从谷歌注销。在这种情况下,任何人都可以访问我的网站。正如卢克所说,这种行为是意料之中的。OAuth是关于应用程序的授权,而不是身份验证和会话管理。您需要在OAuth提供的令牌之上构建自己的会话。我遇到了同样的问题。你解决了这个问题吗?请仔细阅读已接受的答案。这是预期的行为,它提供的是授权服务,而不是身份验证。我已经实现了自己的会话管理。
    <img src="https://mail.google.com/mail/u/0/?logout&hl=en" />
    
    window.location = "https://mail.google.com/mail/u/0/?logout&hl=en";