我正在使用 Drive API v3 开发 Chrome 扩展。我的 OAuth、API 密钥和 client_id 工作正常。我无法获取任何数据。
我使用 this 作为起点,它对于 People API 工作得很好。我将 oauth.js 代码修改为:
window.onload = function() {
document.querySelector('button').addEventListener('click', function() {
chrome.identity.getAuthToken({interactive: true}, function(token) {
let init = {
method: 'GET',
async: true,
headers: {
Authorization: 'Bearer ' + token,
'Content-Type': 'application/json'
},
'contentType': 'json'
};
fetch(
//'https://www.googleapis.com/drive/v3/files?mimeType!=\'application/vnd.google-apps.folder\'',
//'https://www.googleapis.com/drive/v3/files?q=name%20contains%20\'Yamaha\'',
//'https://www.googleapis.com/drive/v3/files?name=\'Spices\'',
'https://www.googleapis.com/drive/v3/files?q=\'0Bxl5Z50oMH4MX2E0UXdhQUdUbGs\'',
init)
.then((response) => response.json())
.then(response => {
console.log(JSON.stringify(response))
console.log("Done stringify");
console.log(response);
console.log("Done response");
})
});
});
};
注释行是对不同获取语法的尝试。
对于每一次尝试,我都没有收到任何控制台错误,而是收到以下错误:
缺失的部分是什么?理想情况下,我想获取所有文件/文件夹、它们的 ID 和名称!
您在获取 URL 中遇到查询参数问题。以下是修复方法:
Correct Query Syntax:
To list all files (not just folders), use:
'https://www.googleapis.com/drive/v3/files'
按名称过滤:
'https://www.googleapis.com/drive/v3/files?q=name+contains+\'Yamaha\''
获取带有元数据的所有文件:包括指定您需要的字段(例如名称、ID):
'https://www.googleapis.com/drive/v3/files?fields=files(id,name)'
Fix Authorization Scopes: Ensure your OAuth scope includes https://www.googleapis.com/auth/drive.readonly.
Debugging Tips:
Log token to verify it's valid.
Check the API response status and errors.
完整工作片段示例:
chrome.identity.getAuthToken({interactive: true}, function(token) {
fetch('https://www.googleapis.com/drive/v3/files?fields=files(id,name)', {
method: 'GET',
headers: {
Authorization: 'Bearer ' + token,
'Content-Type': 'application/json',
},
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
});
这应该获取所有文件及其 ID 和名称。如果不是,请检查范围或令牌有效性。