登錄工作正常,但在着名的3600秒後,它將過期。已閱讀關於它的一些信息,您可以申請一個新的令牌。好的,但這不是今天這個問題的主題。谷歌雲端硬盤API:強制登錄彈出窗口再次登錄或作爲另一個用戶登錄
會話過期後或我想更改爲其他用戶帳戶,我無法弄清楚如何彈出登錄窗口或強制彈出登錄窗口。
在API示例中,它們使用immediate
屬性,將其設置爲false時,窗口將會傀儡但是......只有一秒鐘!它彈出並消失。當用戶從未從瀏覽器中刪除所有cookie之前或從此時刪除所有cookie時,這種情況不會發生。
我想銷燬所有的cookie,但在另一個域名,所以我不能使這些強制彈出登錄窗口無效。已經嘗試了幾件事情,重新創建對象,使令牌等無效,即使會話過期,它也不想再次彈出。
我該怎麼辦? 下面是一些我做的代碼(注意:的oauth2和所有必要的東西都已經加載)
o.cdGoogleAutorize = function(fCallback, bPopUp, bForce)
{
var w = window,
fc = (typeof fCallback == 'function')?fCallback:function(){},
bp = (typeof bPopUp == 'boolean')?bPopUp:false,
clid = w.GAPI_CLIENT_ID+'.apps.googleusercontent.com';
try
{
if(!w.gapi || !w.gapi.auth || !w.gapi.auth.authorize)
{ return false; }
} catch(e) { return false; }
var aScope = w.GAPI_AUTH_SCOPES.split(','),
i = aScope.length;
while(i--)
{ aScope[i]='https://www.googleapis.com/auth/'+aScope[i]; }
aScope.push('openid');
if(bForce)
{ gapi.auth.setToken('');
$d('force'); gapi = o.newInstance(gapi);
} // invalidate object/token etc //gapi.auth.setToken(token)
// authorize
gapi.auth.authorize({
client_id:clid
,scope:aScope
//user_id: uUserId,
,immediate: bp?false:true
},
function(op)
{
if(typeof op == 'object' && op != null && op.client_id == clid)
{
// $d(op.scope);
// gapi.client.load('oauth2', 'v2', function()
//{
gapi.client.oauth2.userinfo.get().execute(function(resp)
{
//$d(resp);
if(!resp.code && resp.id)
{ fc(resp.id); }
else {
//if(!bPopUp)
{ fc(false); }
}
});
//});
}
else fc(false);
});
};
.........
.........
.........
要clearify一些事情:
- $ d()是快捷方式調試窗口
- o。是封裝的對象和 快捷方式「這個」
一些登錄按鈕代碼的onclick(jQuery的):
$j('#login_button').bind('click', function()
{
o.cdGoogleAutorize(function()
{
// do something
}, true, true);
});
任何想法如何強制登錄彈出窗口?
啊,謝謝你的回答。請閱讀該頁面。正如我之前解釋的,無論如何彈出登錄窗口作爲另一個用戶登錄都是不可能的。隨着我發佈的代碼,這是可能的,僅僅幾分鐘後。 – Codebeat
Jay Lee <你知道如何找出一個會話過期嗎? – Codebeat
gapi.auth.getToken()始終是一個空對象? – Codebeat