在 chrome 中阻止 gdrive 授权的弹出窗口

所以,问题在于弹出窗口会阻止窗口打开,即使它是由用户操作完成的,例如单击..

So, the problem is that popup blocking the window open even if it is done by a user action, click for example..

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

如果我只是在用户点击此处打开窗口:

If i simply open the window on user click as here:

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

它工作正常,但如果我这样做了,它会抛出 gdrive api(gapi.auth.authorize),无论如何都会阻塞.

it works fine, but if i did it throw the gdrive api(gapi.auth.authorize), this blocking anyway.

必须,我不能强迫用户关闭弹出窗口阻止.我希望任何人现在如何解决它:),谢谢

A must, I can not force users to off popap blocking. I hope that anybody now how solved it :), thanks

推荐答案

试试这个:

在对 client.js 的调用中包含一个 onload 事件

Include an onload event in your call to client.js

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

从 onload 函数调用 gapi.auth.init:

Call gapi.auth.init from the onload function:

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

在您的授权配置中设置立即:false.

In your authorize configuration set immediate: false.

检查页面流中 1. 是否低于 2..

Check that 1. is below 2. in the flow of the page.

相关文章