Javascript 谷歌+;使用Google java脚本客户端库登录

Javascript 谷歌+;使用Google java脚本客户端库登录,javascript,google-plus,google-api-js-client,Javascript,Google Plus,Google Api Js Client,我正在使用googlre登录我的应用程序 gapi.auth.authorize({ client_id : clientId, scope : scopes, immediate : true }, handleAuthResult); 我能够授权该用户,然后我给出了一个链接,使用该api将该用户注销 gapi.auth.signOut(); 它也在注销用户,但当我刷新页面时,它不会要求再次登录。这是直接加载用户帐户,我想让它要求用户

我正在使用googlre登录我的应用程序

gapi.auth.authorize({
        client_id : clientId,
        scope : scopes,
        immediate : true
    }, handleAuthResult);
我能够授权该用户,然后我给出了一个链接,使用该api将该用户注销

gapi.auth.signOut();
它也在注销用户,但当我刷新页面时,它不会要求再次登录。这是直接加载用户帐户,我想让它要求用户再次登录。
任何人都可以告诉我怎么做。

如果您在本地主机上运行,注销将不起作用

我觉得你做的很好。可能您在
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);
  });
},
如果用户自动/重复注销站点,很可能是由于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";
}
var cookies=document.cookie.split(“;”);
对于(变量i=0;i-1?cookie.substr(0,eqPos):cookie;
document.cookie=name+“=;expires=Thu,1970年1月1日00:00:00 GMT”;
}

如果您在本地主机上运行,注销将不起作用

我觉得你做的很好。可能您在
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);
  });
},
如果用户自动/重复注销站点,很可能是由于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";
}
var cookies=document.cookie.split(“;”);
对于(变量i=0;i-1?cookie.substr(0,eqPos):cookie;
document.cookie=name+“=;expires=Thu,1970年1月1日00:00:00 GMT”;
}

我尝试使用@class answer,但它仍然无法使用signOut(),调用gapi.auth.authorize时没有错误。 但我找到了另一种方法, 尝试访问链接 https://accounts.google.com/o/oauth2/revoke?token=authResult['access_token'],这将使您喜欢注销,用户需要重新接受身份验证。
虽然我现在有点困惑,但我们应该用哪种方式注销()

我尝试了@class answer,但它在signOut()中仍然不起作用,调用gapi.auth.authorize时没有错误。 但我找到了另一种方法, 尝试访问链接 https://accounts.google.com/o/oauth2/revoke?token=authResult['access_token'],这将使您喜欢注销,用户需要重新接受身份验证。
虽然我现在有点困惑,但我们应该用哪种方式注销()

thanx@class用于您的响应。@class-我们将您的演示代码复制粘贴到我们的服务器上,并将客户端ID更改为我们的,当我们在注销后刷新时,将返回一个无错误的身份验证结果,因此用户将自动登录。你知道为什么我们的客户id会出现这种情况而不是你的吗?或者它可能与我们站点配置中的其他内容有关?如果您在本地主机上运行,它可能会影响cookie行为。您是否在web上的服务器上运行?我们主要在localhost上进行测试。因此,我们应该在我们的Web服务器上尝试这一点以确保?他们应该在页面中添加一个“gotcha”,说明注销在本地主机上无法正常工作。本周末本可以为我们节省几个小时。thanx@class供您回复。@class-我们将您的演示代码复制粘贴到我们的服务器上,并将客户端ID更改为我们的,当注销后刷新时,我们将返回一个无误的身份验证结果,因此用户将自动登录。你知道为什么我们的客户id会出现这种情况而不是你的吗?或者它可能与我们站点配置中的其他内容有关?如果您在本地主机上运行,它可能会影响cookie行为。您是否在web上的服务器上运行?我们主要在localhost上进行测试。因此,我们应该在我们的Web服务器上尝试这一点以确保?他们应该在页面中添加一个“gotcha”,说明注销在本地主机上无法正常工作。本周末我们可以节省几个小时。您是在本地测试还是在Web服务器上测试?我在localhost上也遇到过同样的问题,但后来在我们的Web服务器上尝试过,效果很好。请注意,这会断开用户与您帐户的连接,因此您用于脱机访问的任何刷新令牌都将失效。您可能不应该这样做。您是在本地测试还是在Web服务器上测试?我在localhost上也遇到过同样的问题,但后来在我们的Web服务器上尝试过,效果很好。请注意,这会断开用户与您帐户的连接,因此您用于脱机访问的任何刷新令牌都将失效。您可能不应该这样做。我遇到这个问题是因为我是从HTTP而不是HTTPS页面登录的。我遇到这个问题是因为我是从HTTP而不是HTTPS页面登录的。