3

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

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

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

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

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

4

3 回答 3

1

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

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

于 2013-04-15T20:49:24.293 回答
0

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

使用 Google+ 登录时阻止自动登录

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

于 2013-04-16T03:41:54.663 回答
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.');
    });
}

于 2015-10-20T11:25:18.677 回答