Google api 谷歌+;登录:从我的webapp注销时,用户仍使用谷歌登录

Google api 谷歌+;登录:从我的webapp注销时,用户仍使用谷歌登录,google-api,google-plus,Google Api,Google Plus,我创建了一个使用Google+登录API的web应用程序,但遇到了自动登录行为的问题 我不确定我是否正确实施了它,问题是: 用户使用他们的Google+登录详细信息登录到我的应用程序 现在他们不仅登录到我的应用程序,还登录到他们的谷歌账户 完成后,他们退出我的应用程序,但仍然登录到谷歌 现在假设另一个用户(使用相同的机器/浏览器)访问我的站点,他们将使用以前的用户详细信息自动登录 我理解这是一种不好的做法,避免a)在用户离开我的网站时将其Google帐户注销,或b)禁用Google+登录的自

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

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

  • 用户使用他们的Google+登录详细信息登录到我的应用程序
  • 现在他们不仅登录到我的应用程序,还登录到他们的谷歌账户
  • 完成后,他们退出我的应用程序,但仍然登录到谷歌
  • 现在假设另一个用户(使用相同的机器/浏览器)访问我的站点,他们将使用以前的用户详细信息自动登录
我理解这是一种不好的做法,避免a)在用户离开我的网站时将其Google帐户注销,或b)禁用Google+登录的自动行为


那么如何防止这种行为呢?

用户授权您的应用程序后,Google+登录按钮会自动告诉您的应用程序他们是谁。如果用户希望使用其他帐户使用您的站点,那么他们需要注销Google并以其他用户的身份登录


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

参考下面问题中的答案。这与您的场景非常相似


但即使在提议的解决方案中,google+帐户仍将登录。你可以做的另一个步骤是添加一个提示,要求用户注销google+帐户,或者你可以代表用户调用google+注销api(没有检查是否有)。我也有这个问题。您需要在从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.');
    });
}

函数onSuccessG(谷歌用户){
var profile=googleUser.getBasicProfile();
console.log('ID:'+profile.getId());//不要发送到后端!改用ID令牌。
log('Name:'+profile.getName());
log('Image URL:'+profile.getImageUrl());
log('Email:'+profile.getEmail());
//现在在这里写一个登录代码//
//
//现在在这里写一个登录代码//
signOut();//调用signOut函数,将用户从gmail帐户注销
}
功能失效(错误){
console.log(错误);
}
函数renderButton(){
gapi.signn2.render('my-signn2'{
'范围':'https://www.googleapis.com/auth/plus.login',
“宽度”:323,
身高:35,,
"龙缇乐":对,,
“主题”:“黑暗”,
“onsuccess”:onsuccess,
“onfailure”:onFailureG
});
}
函数签出(){
var auth2=gapi.auth2.getAuthInstance();
auth2.signOut().then(函数(){
log('User signed out');
});
}

感谢您的回复。我真的不想禁用自动登录(我没有像facebook和twitter这样的多个社交登录),所以在这方面没有问题。我只是觉得如果有人在使用公共电脑,这可能是一个安全问题。但我想这取决于个人意识到他们的谷歌登录状态,并采取预防措施,如取消选中“保持登录”框。如果你让某人访问你的计算机,你应该退出谷歌。让某人访问您的登录浏览器是一个安全问题,不仅对您的应用程序,而且对整个Google帐户都是如此。@ChrisCartland我有几乎相同的问题,但是在Google OAuth2(非登录)的上下文中,我正在使用python/flask来实现它。我是一个初学者,我不知道如何将你的答案移植到我的特定环境中。如果你能看看我这里的问题,我将不胜感激:可能的副本