2013-04-15 40 views
2

我创建了一个使用Google+登录API的Web应用程序,但遇到了自动登录问题。Google+登录:从我的Web应用程序注销时,用户仍然使用Google登录

我不知道我是否已经正确地实现它,这里的问题:

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

我明白这是不好的做法,避免任何一个)签署用户从他们的谷歌帐户,当他们离开我的网站,或b)禁止在Google+注册的自动行为。

那么如何我可以阻止这种行为吗?

+1

的可能重复[防止自动登录时使用Google+登入(HTTP:/ /stackoverflow.com/questions/15484533/preventing-automatic-sign-in-when-using-google-sign-in) –

回答

1

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

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

+0

感谢您的回复。我并不想禁用自动登录(我没有多个社交登录名,例如脸书和推特),所以在这方面这不是问题。 我只是觉得如果有人使用公共计算机,这可能是一个可能的安全问题。 但我猜想这会导致个人意识到自己的Google登录状态,并采取预防措施,例如取消选中“保持登录状态”框。 – veritas1

+0

如果您允许某人访问您的计算机,则应该退出Google。让某人访问您的登录浏览器是一个安全问题,不仅针对您的应用,而且针对整个Google帐户。 –

+0

@ChrisCartland我有几乎相同的问题,但在Google OAuth2(不是登录)的情况下,我使用python/flask来实现它。我是初学者,我不确定如何将您的答案移植到我的特定环境中。我非常感谢,如果你可以看看我的问题在这里:https://stackoverflow.com/questions/47150564/how-to-log-user-out-of-an-app-that-uses-google -oauth2点登录 –

0

请参考下面问题的答案。这是非常相似的情景

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

但即使在所提出的解决方案的谷歌+账户仍然会被登录。你可以做的另一步是添加一个提示,询问用户注销谷歌的Google+帐户或你可以代表用户调用google + logout API(没有检查是否有)。

0

我也有这个问题。你需要尽快登出的Gmail帐户从Gmail权威性得到电子邮件ID:

<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.'); 
    }); 
} 

相关问题