我创建了一个使用Google+登录API的网络应用程序,但遇到了自动登录行为的问题。
我不确定我是否正确实现了它,这是问题:
我理解这是不好的做法,并且避免a)在用户离开我的网站时将用户退出Google帐户或b)禁用Google+登录的自动行为。
那么我该如何防止这种行为?
答案 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.');
});
}