gpt4 book ai didi

Flutter - 如何使用 Google Drive API 下载公共(public)文件

转载 作者:行者123 更新时间:2023-12-02 19:16:57 29 4
gpt4 key购买 nike

我第一次尝试使用 Google API、Google Drive API,我正在使用 Google SignIn 对用户进行身份验证。我在启用 Google Drive API 后创建了 ClientId、ClientSecret 和 Scope,但我不知道如何使用它们。我最终使用 GoogleSignInAccount 的 authHeaders 创建了一个 HTTP 客户端。

我不需要访问我的文件或管理它们,我只需要进行身份验证,因为我可能需要下载大文件,使用直接链接不起作用,因为它有一个大文件的确认窗口,不能'不被扫描。

当我尝试使用它的 ID 下载公共(public)文件时,我总是收到以下错误。

class GoogleHttpClient extends IOClient {
Map<String, String> _headers;

GoogleHttpClient(this._headers) : super();

@override
Future<IOStreamedResponse> send(BaseRequest request) =>
super.send(request..headers.addAll(_headers));

@override
Future<Response> head(Object url, {Map<String, String> headers}) =>
super.head(url, headers: headers..addAll(_headers));

}

class GDriveHelper {

// NOT USING
//static final clientId = "??????.apps.googleusercontent.com";
//static final clientSecret = "??????";
//static final scopes = [ga.DriveApi.DriveFileScope];

static UserController userController = Get.find();

static Future<void> download(String fileId) async {

Map<String, String> headers = await userController.googleSignInAccount.authHeaders;

var client = GoogleHttpClient(headers);
var drive = ga.DriveApi(client);

await drive.files.get(fileId).then((file){

print("FILE: $file");

});



}

}

当我调用该方法时出现此错误:

await GDriveHelper.download(fileId);

DetailedApiRequestError(status: 403, message: Insufficient Permission: Request had insufficient authentication scopes.)

最佳答案

根据您的问题,我了解到您尝试下载公开共享的文件。从我们的讨论中,我确认未使用 clientIdclientSecretscopes。从这些情况来看,作为一种简单的方法,我想建议使用 API key 下载公开共享的文件。 API key 可以下载公开共享的文件。请求可以很简单,如下所示。

示例请求:

GET https://www.googleapis.com/drive/v3/files/[FILEID]?alt=media&key=[YOUR_API_KEY]
  • 此方法中,除Google Docs(Document、Spreadsheet、Slides等)外的文件都可以通过the method of "Files: get"下载。在云端硬盘 API 中。

  • 如果您想下载 Google Docs 文件,请使用 the method of "Files: export"如下。

      GET https://www.googleapis.com/drive/v3/files/[FILEID]/export?mimeType=[mimeType]&key=[YOUR_API_KEY]

curl 命令示例:

作为测试,当您使用 curl 时,示例 curl 命令如下。

除 Google Docs 文件外的文件:
curl "https://www.googleapis.com/drive/v3/files/[FILEID]?alt=media&key=[YOUR_API_KEY]"
谷歌文档文件:
curl "https://www.googleapis.com/drive/v3/files/[FILEID]/export?mimeType=[mimeType]&key=[YOUR_API_KEY]"

引用资料:

关于Flutter - 如何使用 Google Drive API 下载公共(public)文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63585981/

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