Google+登录:从我的webapp用户退出时仍会使用Google登录

时间:2013-04-15 18:08:23

标签: google-api google-plus

我创建了一个使用Google+登录API的网络应用程序,但遇到了自动登录行为的问题。

我不确定我是否正确实现了它,这是问题:

  • 用户使用Google+登录详细信息登录我的应用程序。
  • 现在他们已登录我的应用,但也登录了他们的Google帐户。
  • 完成后,他们会退出我的应用,但仍会登录Google。
  • 现在假设不同的用户(使用相同的计算机/浏览器)访问我的网站,他们会使用以前的用户详细信息自动登录。

我理解这是不好的做法,并且避免a)在用户离开我的网站时将用户退出Google帐户或b)禁用Google+登录的自动行为。

那么我该如何防止这种行为?

3 个答案:

答案 0 :(得分:1)

用户授权您的应用程序后,Google+登录按钮会自动告知您的应用程序他们是谁。如果用户希望将您的网站与其他帐户一起使用,则他们需要退出Google并以其他用户身份登录。

听起来您希望用户与您网站之间的登录状态与用户与Google的登录状态不同。为了实现此目的,您需要管理自己的会话状态。换句话说,如果用户授权您的应用,该按钮将始终触发JavaScript回调。您,开发人员可以选择忽略该信息,直到用户单击登录按钮。一些开发人员通过将click事件处理程序附加到按钮来完成此操作。

答案 1 :(得分:0)

请参阅以下问题中的答案。它与您的场景非常相似

Preventing automatic sign-in when using Google+ Sign-In

但即使在提议的解决方案中,Google +帐户仍会登录。您可以做的另一个步骤是添加提示,要求用户退出google +帐户,或者您可以调用google + logout api(不检查是否存在是一个代表用户。

答案 2 :(得分:0)

我也有这个问题。一旦从gmail auth:

获得电子邮件ID,您需要退出gmail帐户
<script src="https://apis.google.com/js/platform.js?onload=renderButton" async defer></script>
<script>

function onSuccessG(googleUser) {
        var profile = googleUser.getBasicProfile();
        console.log('ID: ' + profile.getId()); // Do not send to your backend! Use an ID token instead.
        console.log('Name: ' + profile.getName());
        console.log('Image URL: ' + profile.getImageUrl());
        console.log('Email: ' + profile.getEmail());
        //now here write a code of login//
        //
        //now here write a code of login//

       signOut();//call sign out function which will sign out user from their gmail accont

}
function onFailureG(error) {
    console.log(error);
}
function renderButton() {
  gapi.signin2.render('my-signin2', {
    'scope': 'https://www.googleapis.com/auth/plus.login',
    'width': 323,
    'height': 35,
    'longtitle': true,
    'theme': 'dark',
    'onsuccess': onSuccessG,
    'onfailure': onFailureG
  });
}
function signOut() {
    var auth2 = gapi.auth2.getAuthInstance();
    auth2.signOut().then(function () {
        console.log('User signed out.');
    });
}