【问题标题】:Google authorize popup gets stuck in chrome extensionGoogle 授权弹出窗口卡在 chrome 扩展中
【发布时间】:2013-02-22 08:42:43
【问题描述】:

我在 chrome 扩展程序中使用 gapi 客户端来访问 Google 云端硬盘。第一步是授权我的应用程序。我正在使用 gapi.auth.authorize 来启动授权。在我通过 gapi 启动的弹出窗口授权应用程序后,窗口永远不会关闭并卡住,如下图所示。但是后台授权已经成功,因为如果我手动关闭窗口,下次我就看不到卡住的弹出窗口了。有人能指出我做错了什么吗?

在我点击授权弹出窗口中的“允许访问”后,

然后显示一个空白弹出窗口,卡住了

我正在使用的代码

function handleClientLoad(){
      gapi.client.setApiKey('My API key');
      window.setTimeout(checkAuthAuto, 1);
}


var checkAuthAuto = function () {
    console.log('checkAuthAuto');
    gapi.auth.authorize({
        client_id: 'My client id',
        scope: 'https://www.googleapis.com/auth/drive.file',
        immediate: true
    }, handleAuthResult);
}



 function handleAuthResult(authResult) {
        console.log('handleAuthResult');
        var authButton = document.getElementById('authorizeButton');
        var filePicker = document.getElementById('filePicker');
        var addButton = document.getElementById('addButton');
        authButton.style.display = 'none';
        filePicker.style.display = 'none';
        addButton.style.display = 'none';
        if (authResult && !authResult.error) {
          addButton.style.display = 'block';
          addButton.onclick = uploadFile;
          console.log('handleAuthResult:noerror');

        } else {
          // No access token could be retrieved, show the button to start the authorization flow.
          authButton.style.display = 'block';

          console.log('handleAuthResult:error');
          console.log(authResult);

          authButton.onclick = function() {
              console.log('authButton.onclick');
              gapi.client.setApiKey('My api key');
              gapi.auth.authorize({
                  client_id: 'My client id',
                  scope: 'https://www.googleapis.com/auth/drive.file',
                  immediate: false
              }, handleAuthResult);
              return false;
          };
        }
}

【问题讨论】:

  • 我也在尝试确保我是否在 google API 控制台中正确设置了我的 API 访问权限。我已指定 javascript 来源 - “chrome-extension://”并将重定向 uri 留空。
  • 在谷歌代码上为 gapi 团队记录了一个问题,code.google.com/p/google-api-javascript-client/issues/…。请点赞。
  • 你能解决这个问题吗?我现在被同样的问题困扰了好几天。无论如何,Chrome 扩展程序都不会关闭该弹出窗口。我尝试了几种 javascript hack,但没有用。

标签: javascript google-api google-drive-api google-api-js-client


【解决方案1】:

即使使用 chrome 扩展,您也可以使用 chrome.identity 并且弹出窗口会按照我们的预期关闭。

使用名为 gapi.auth.authorize 的包装器包装 chrome.identity.getAuthToken。 参考:https://github.com/GoogleChrome/chrome-app-samples/blob/master/gapi-chrome-apps-lib/gapi-chrome-apps.js

问题是当前的稳定版 chrome 28 不允许您这样做,您最好进行版本检查或等待一段时间,直到稳定版获得此功能。 不过仍然不确定,即使我能够做到这一点,也可以使用扩展来执行此操作...

【讨论】:

  • Chrome 33 中仍未修复?我遇到了同样的问题。
猜你喜欢
  • 2011-03-03
  • 2011-09-27
  • 2017-07-11
  • 2012-03-08
  • 1970-01-01
  • 1970-01-01
  • 2013-03-17
  • 2014-11-19
  • 1970-01-01
相关资源
最近更新 更多