Javascript Google Drive API:强制登录弹出窗口重新登录或以其他用户身份登录

Javascript Google Drive API:强制登录弹出窗口重新登录或以其他用户身份登录,javascript,login,popup,google-drive-api,Javascript,Login,Popup,Google Drive Api,登录工作正常,但在著名的3600秒之后,它将过期。已经阅读了一些关于它的信息,您可以请求一个新的令牌。好的,但这不是今天这个问题的主题 会话过期或我想更改为其他用户帐户后,我无法确定如何弹出登录窗口或强制弹出登录窗口 在API示例中,他们使用immediate属性,当设置为false时,窗口将弹出,但。。。。只有一瞬间!它会弹出并消失。当用户以前从未登录或从浏览器中删除所有cookie时,不会发生这种情况 我想销毁所有cookie,但它们位于另一个域上,因此我无法使这些cookie无效,从而强制

登录工作正常,但在著名的3600秒之后,它将过期。已经阅读了一些关于它的信息,您可以请求一个新的令牌。好的,但这不是今天这个问题的主题

会话过期或我想更改为其他用户帐户后,我无法确定如何弹出登录窗口或强制弹出登录窗口

在API示例中,他们使用
immediate
属性,当设置为false时,窗口将弹出,但。。。。只有一瞬间!它会弹出并消失。当用户以前从未登录或从浏览器中删除所有cookie时,不会发生这种情况

我想销毁所有cookie,但它们位于另一个域上,因此我无法使这些cookie无效,从而强制弹出登录窗口。已经尝试了一些事情,重新创建对象,使令牌无效等等,即使会话过期,它也不想再次弹出

我能做些什么? 下面是我编写的一些代码(注意:oauth2和所有必要的东西都已加载)

要澄清一些事情:

  • $d()是调试窗口的快捷方式
  • o。是封装的对象和 “这”的捷径
登录按钮的一些代码onclick(jquery):

 $j('#login_button').bind('click', function()
 {
   o.cdGoogleAutorize( function()
   {
     // do something 
   }, true, true );
 });

您知道如何强制登录弹出窗口吗?

要回答您的第一个问题,您需要提供一个刷新令牌。在前3600秒过期后,您可以使用刷新令牌请求新的访问令牌,无需让用户再次登录。

明白了

但如果还有其他想法,请告诉我。我意识到使用此解决方案可以注销应用程序和其他google服务的所有驱动器连接。最好在此操作之间使用警告对话框

我已经使用了我的帐户注销按钮的代码,并在iframe中使用它。加载此文件后,我再次请求登录。我将以下代码添加到函数体的顶部:

  if( bForce )
  { 
    var $oFrame = $('<iframe class="hidden" src="https://www.google.com/accounts/Logout?service=wise&amp;continue='+
                      'https://drive.google.com/?authuser%3D0"></iframe>');
    $oFrame.bind('load', function()
    {
      // Give it a sec
          setTimeout( function() 
      { o.cdGoogleAutorize( fCallback, true ); 
        $oFrame.remove();
      }, 1000 );
    }).appendTo('body');
    return true;
  } 
if(bForce)
{ 
变量$oFrame=$('');
$oFrame.bind('load',函数()
{
//等一下
setTimeout(函数()
{o.cdGoogleAutorize(fCallback,true);
$oFrame.remove();
}, 1000 );
}).附于(“主体”);
返回true;
} 

啊,谢谢你的回答。已经读过那一页了。正如我之前解释的,无论怎样,都不可能弹出登录窗口以另一个用户的身份登录。使用我发布的代码,这是可能的,只需几分钟。Jay Lee<你知道如何找出会话已过期吗?gapi.auth.getToken()始终是一个空对象?要确定访问令牌是否已过期,请标记何时收到并查看是否已超过3600秒(实际上,您应该在属性值中使用expires_,但该值始终为3600)。实际上,在令牌过期前一两分钟刷新可能值得,以确保您不会遇到任何时间同步问题。Jay Lee<啊,谢谢,我会解决的。但是当用户刷新页面时会发生什么?这也是自动刷新吗?使用计时器时要知道这一点非常重要
  if( bForce )
  { 
    var $oFrame = $('<iframe class="hidden" src="https://www.google.com/accounts/Logout?service=wise&amp;continue='+
                      'https://drive.google.com/?authuser%3D0"></iframe>');
    $oFrame.bind('load', function()
    {
      // Give it a sec
          setTimeout( function() 
      { o.cdGoogleAutorize( fCallback, true ); 
        $oFrame.remove();
      }, 1000 );
    }).appendTo('body');
    return true;
  }