Google+ 登录:如何注销 - 使用 (gapi.auth.signOut)

Posted

技术标签:

【中文标题】Google+ 登录:如何注销 - 使用 (gapi.auth.signOut)【英文标题】:Google+ Login: How to logout - using (gapi.auth.signOut) 【发布时间】:2013-12-25 03:45:03 【问题描述】:

我需要一些帮助,了解如何从您使用 Google+ 帐户登录的网站创建退出功能。

文档说明您应该使用 gapi.auth.signOut 函数

https://developers.google.com/+/web/signin/sign-out

但作为 javascript 的新手,我似乎没有运气。

这是我的代码 - 退出功能是底部的部分。我做错了什么?

<script>


function signinCallback(authResult) 
  if (authResult['status']['signed_in']) 
    // Update the app to reflect a signed in user
    // Hide the sign-in button now that the user is authorized, for example:
          document.getElementById('signinButton').setAttribute('style','display: none ');
          document.getElementById('callback').setAttribute('style','height: 100px;background-color: red ');

        var mydiv = document.getElementById("callback");
        var aTag = document.createElement('a');
        aTag.innerhtml = "Sign out";
        aTag.id= "signout";
        mydiv.appendChild(aTag);


/*function checkid()
    document.getElementById('signout')
    */

 else 
    // Update the app to reflect a signed out user
    // Possible error values:
    //   "user_signed_out" - User is signed-out
    //   "access_denied" - User denied access to your app
    //   "immediate_failed" - Could not automatically log in the user
    console.log('Sign-in state: ' + authResult['error']);
  


        document.addEventListener('DOMContentLoaded', function () 
      document.getElementById("signout").addEventListener('click', function()
                gapi.auth.signOut();
                    );

</script>

【问题讨论】:

***.com/questions/20446803/… @Jakob 你有解决办法吗? 【参考方案1】:

如果您希望您的用户被要求重新输入凭据,您将需要撤销用户对您的应用程序的身份验证。在我的应用程序中,我像下面的 sn-p 那样做。您可能会发现 this answer 很有用。

var token = gapi.auth.getToken();
if (token) 
  var accessToken = gapi.auth.getToken().access_token;
  if (accessToken) 
    // make http get request towards: 'https://accounts.google.com/o/oauth2/revoke?token=' + accessToken
    // In angular you can do it like this:
    // $http(
    //   method: 'GET',
    //   url: 'https://accounts.google.com/o/oauth2/revoke?token=' + accessToken
    // );
  

gapi.auth.setToken(null);
gapi.auth.signOut();

【讨论】:

【参考方案2】:

以下命令非常适合我。

gapi.auth2.getAuthInstance().disconnect();

【讨论】:

这在技术上不是注销。它会撤销您的权限,以便下次有人想再次登录时,他们必须重新进行权限审批流程。【参考方案3】:

使用 jquery,我的朋友做了这个 - 效果很好。

$('#signout').on('click', function(event) 
    gapi.auth.signOut();
);

【讨论】:

这对你有用吗?当用户尝试通过 gplus 再次登录您的网站时。 gplus 要求新的凭据? gapi.authsignOut 会为您返回什么? 这里真的不需要jquery。【参考方案4】:

要强制选择帐户,您可以使用'prompt': 'select_account'

对我来说效果很好

    gapi.auth.authorize(
      
        'client_id': YOURCLIENTID,
        'scope': SOMESCOPE,
        'authuser': -1,
        'prompt': 'select_account'
      ,
      function (authResult) 
          .......
      
    )

【讨论】:

以上是关于Google+ 登录:如何注销 - 使用 (gapi.auth.signOut)的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Authentication 从登录屏幕到登录屏幕使用 Google 登录和注销

开放标识。你如何注销

如何在颤动中自动注销firebase用户?

在 Flutter 中使用 Firebase/Google 登录时无法注销并重定向到 LoginPage

Google 使用 g-plus 最新 API 在 android 中登录和注销

Spring Boot + OAuth2 + Google Login - 如何实现注销