如果您在 localhost 上运行,则注销将不起作用。
你所做的对我来说看起来不错。也许您错过了在您的handleAuthResult方法中注销用户的检查。这可能会发生,因为即使用户未登录,也会触发回调方法。要检查这一点,您应该确保在更改用户的登录状态之前在回调中获取访问令牌。一些有助于初始化 Google+ JavaScript API 客户端的代码:
handleAuthResult: function(authResult) {
gapi.client.load('plus','v1', function(){
$('#authResult').html('Auth Result:<br/>');
for (var field in authResult) {
$('#authResult').append(' ' + field + ': ' +
authResult[field] + '<br/>');
}
if (authResult['access_token']) {
$('#authOps').show('slow');
$('#gConnect').hide();
helper.profile();
helper.people();
} else if (authResult['error']) {
// There was an error, which means the user is not signed in.
// As an example, you can handle by writing to the console:
console.log('There was an error: ' + authResult['error']);
$('#authResult').append('Logged out');
$('#authOps').hide('slow');
$('#gConnect').show();
}
console.log('authResult', authResult);
});
},
您可以在此处查看演示代码。如果您打开浏览器的 JavaScript 控制台,您将在用户退出时注意到以下错误消息:
authResult
...
Object {error: "user_signed_out",
cookie_policy: "single_host_origin"
error: "user_signed_out"
expires_at: "1388530488"
expires_in: "86400"
g-oauth-window: undefined
g_user_cookie_policy: "single_host_origin"
issued_at: "1388444088"
response_type: "code token id_token gsession"
scope: "https://www.googleapis.com/auth/plus.login
session_state: "707059cda8acedf0acf31d83c713e9f16f232610..25c4"
status: Object
google_logged_in: true
method: null
signed_in: false
...
如果用户自动/重复退出站点,很可能是由于 cookie 存储已损坏的已知问题。如果您遇到此问题,请在隐身窗口中打开目标页面或删除当前 cookie,例如在开发者控制台中运行以下 javascript:
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i];
var eqPos = cookie.indexOf("=");
var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
}