gpt4 book ai didi

file - Flutter:Google Drive:文件列表总是返回 0

转载 作者:IT王子 更新时间:2023-10-29 06:56:00 26 4
gpt4 key购买 nike

我想从 Google 云端硬盘文件夹中检索文件列表。身份验证通过服务帐户进行。这是我执行相同操作的代码:

final _credentials = new ServiceAccountCredentials.fromJson(r'''
{
"private_key_id": "b5-xxxx-17",
"private_key": "-----BEGIN PRIVATE KEY-----\nMI-xxxxk=\n-----END PRIVATE KEY-----\n",
"client_email": "drive-access@xxxx.iam.gserviceaccount.com",
"client_id": "100000000000",
"type": "service_account"
}
''');

final _SCOPES = [SheetsApi.DriveFileScope, SheetsApi.SpreadsheetsScope];

clientViaServiceAccount(_credentials, _SCOPES).then((http_client) {
DriveApi driveApi = DriveApi(http_client);
driveApi.files.list().then((files) {
print('kind: ' + files.kind);
print('list: ' + files.files.length.toString());
});

我的日志是这样的:

just: drive#fileList
list: 0

在 Google Developers Console 中,Google Drive API 已启用并且服务帐户已正确链接(据我所知)。

但我还得到了另一段代码,它使用硬编码的 sheetID 将一些数据写入电子表格,并且该代码工作正常。

对我在这里做错了什么有帮助吗?

最佳答案

使用服务帐户检索文件:

服务帐户与您的 Google 帐户不同。这意味着服务帐户和您的帐户之间的 Google 云端硬盘也不同。因此,当使用服务帐户检索文件时,请与服务帐户共享您的 Google Drive 中的文件。这样,您的 Google 云端硬盘中的文件就可以通过服务帐户检索。

范围:

在您的脚本中,DriveFileScopeSpreadsheetsScope 用作范围。 DriveFileScopehttps://www.googleapis.com/auth/drive.fileThe official document表示此范围如下。

View and manage Google Drive files and folders that you have opened or created with this app

由此,在您的脚本中,如何修改 DriveFileScope 如下?

  • DriveReadonlyScope (https://www.googleapis.com/auth/drive.readonly)
  • DriveScope (https://www.googleapis.com/auth/drive)

备注:

  • 我认为这个范围也可以用于您的情况。
    • DriveApi.driveMetadataReadOnlyScope (https://www.googleapis.com/auth/drive.metadata.readonly)

引用资料:

关于file - Flutter:Google Drive:文件列表总是返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57316103/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com