使用 Drive API 的 Chrome 扩展程序返回不完整的搜索

问题描述 投票:0回答:1

我正在使用 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");
      
    })
   });
  });
 };

注释行是对不同获取语法的尝试。

对于每一次尝试,我都没有收到任何控制台错误,而是收到以下错误:

Console

缺失的部分是什么?理想情况下,我想获取所有文件/文件夹、它们的 ID 和名称!

javascript google-drive-api
1个回答
0
投票

您在获取 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 和名称。如果不是,请检查范围或令牌有效性。

© www.soinside.com 2019 - 2024. All rights reserved.