2013-03-27 51 views
4

所以,問題是,彈出窗口攔截窗口,即使它是由用戶操作完成後,單擊例如開..彈出鉻阻斷GDrive的授權

gapi.auth.authorize({ 
    client_id: this.client_id, 
    scope: this.scopes, 
    access_type: 'online', 
    immediate: immediate 
}, function(authResult) { 
    console.log(authResult) 
}); 

如果我只是在打開的窗口用戶點擊這裏:

$('.some').click(funciton(){ 
    window.open(someurl) 
}) 

它工作正常,但如果我這樣做是拋出GDrive的API(gapi.auth.authorize),這堵反正。

必須,我不能強制用戶關閉popap阻止。 我希望任何人現在如何解決它:),謝謝

回答

2

根據您的瀏覽器設置,不會來自用戶事件的彈出窗口將被阻止。你可以嘗試設置立即爲false:

gapi.auth.authorize({ 
    client_id: this.client_id, 
    scope: this.scopes, 
    immediate: false 
}, function(authResult) { 
    console.log(authResult) 
}); 

您可以使用此代碼以刷新訪問令牌您已授權應用程序之後。

+1

在我的示例變量「immediate」已經包含false,popap已經彈出但阻止。 gapi.auth.authorize調用點擊事件,但無論如何阻塞,這是一個問題。 – nikitka 2013-04-01 10:43:20

4

試試這個:

在您的呼叫包括onload事件從在onload功能client.js

<script type="text/javascript" src="https://apis.google.com/js/client.js?onload=handleClientLoad"></script>

呼叫gapi.auth.init:

function handleClientLoad() { window.setTimeout(gapi.auth.init,1); }

在您的授權配置集中立即:false。

檢查1.頁面流量低於2.。

0

你只需要gapi.auth2.getAuthInstance().isSignedIn.get();未經授權按鈕權限。這將禁用彈出。

gapi.client.init({ 
    discoveryDocs: DISCOVERY_DOCS, 
    clientId: CLIENT_ID, 
    scope: SCOPES 
}).then(function() {  
    // Handle the initial sign-in state. 
    gapi.auth2.getAuthInstance().isSignedIn.get(); 
});