【发布时间】: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