标题
我正在开发 Google App Engine。将 Python 与 webbapp2 框架结合使用。
我使用 Google API 登录和注销。看起来效果不错。登录和注销都很完美。这是Google官方指南:https://developers.google.com/+/web/signin/
问题是,注销后刷新页面后,用户会自动再次登录。
这是带有相关参数的登录按钮:
<span
class="g-signin"
data-callback="signinCallback"
data-clientid="##################.apps.googleusercontent.com"
data-cookiepolicy="single_host_origin"
data-requestvisibleactions="http://schemas.google.com/AddActivity"
data-scope="https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email">
<button type="button">GOOGLE+ LOGIN</button>
</span>
这是注销按钮:
<button onclick="disconnectUser()">Disconnect</button>
这是注销回调函数:
<script type="text/javascript">
function disconnectUser(access_token) {
var revokeUrl = 'https://accounts.google.com/o/oauth2/revoke?token=' +
access_token;
// Esecuzione di una richiesta GET asincrona.
$.ajax({
type: 'GET',
url: revokeUrl,
async: false,
contentType: "application/json",
dataType: 'jsonp',
success: function(nullResponse) {
// Esegui un'azione, l'utente è disconnesso
// La risposta è sempre indefinita.
document.getElementById('signinButton').setAttribute('style', 'display: inherit');
document.getElementById('revokeButton').setAttribute('style', 'display: none');
},
error: function(e) {
// Gestione dell'errore
// console.log(e);
// Puoi indirizzare gli utenti alla disconnessione manuale in caso di esito negativo
// https://plus.google.com/apps
}
});
}
// È possibile attivare la disconnessione con un clic del pulsante
$('#revokeButton').click(disconnectUser);
</script>
你觉得怎么样?可能是什么问题呢?关于 cookie 设置的事情?
最佳答案
您应该调用 gapi.auth.signOut()
来注销用户。正如您在此处实现的那样,断开连接将断开用户与您的应用程序的连接,并取消您的应用程序代表用户进行 API 调用的授权。一个例子是:
<button onclick="gapi.auth.signOut()">Sign out</button>
参见Signing out the user有关如何正确注销用户的更多信息。
还值得注意的是:
- 如果您从本地主机运行,注销可能无法正常工作。
- 登录回调也会在失败时调用:确保检查错误消息是否缺失,即:
function signinCallback(authResult) {
if (authResult['status']['signed_in']) {
// Signed in
} else {
console.log('Sign-in failed: ' + authResult['error']);
}
}
关于javascript - Google+ Oauth 2.0 - 注销效果很好,但刷新网页后自动登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28325645/