为了账号安全,请及时绑定邮箱和手机立即绑定

Google Drive API 错误 - “消息”:“找不到共享驱动器:xyz”

Google Drive API 错误 - “消息”:“找不到共享驱动器:xyz”

Go
婷婷同学_ 2022-10-24 16:31:28
我正在使用服务帐户连接到我个人 Google 帐户中的共享驱动器。Google Drive API 总是返回一个错误,指出找不到共享驱动器。我尝试了这两个:向知道链接的任何人公开共享云端硬盘使用服务帐户的电子邮件地址为特定用户(服务帐户)添加权限共享驱动器的链接采用这种格式https://drive.google.com/drive/folders/xyz 我假设 driveId 是链接的最后一部分,xyz?还是那个文件夹ID?如果是这样,那么我如何找到 driveId?// load the service account credentialsdata, err := ioutil.ReadFile("service-account.json")if err != nil {    log.Fatal("failed to read json file")}// parse the credentials fileconf, err := google.JWTConfigFromJSON(data, drive.DriveReadonlyScope)if err != nil {    log.Fatal("failed to parse json file")}apiKeyBytes, err := ioutil.ReadFile("api-key.txt")API_KEY := string(apiKeyBytes)DRIVE_ID := "1dpl28_lhR1myDL2Y2gYKLRX1gNRlWdFm"// send the GET request with all the parametersclient := conf.Client(context.Background())parameters := "?key=" + API_KEYparameters += "&corpora=drive"parameters += "&includeItemsFromAllDrives=true"parameters += "&supportsAllDrives=true"parameters += "&driveId=" + DRIVE_IDresponse, err := client.Get("https://www.googleapis.com/drive/v3/files" + parameters)// read and print the responsedata_buffer := make([]byte, 2048)_, err = response.Body.Read(data_buffer)response.Body.Close()fmt.Println(string(data_buffer))这是该程序运行时的输出:{ "error": {  "errors": [   {    "domain": "global",    "reason": "notFound",    "message": "Shared drive not found: 1dpl28_lhR1myDL2Y2gYKLRX1gNRlWdFm",    "locationType": "parameter",    "location": "driveId"   }  ],  "code": 404,  "message": "Shared drive not found: 1dpl28_lhR1myDL2Y2gYKLRX1gNRlWdFm" }}我还在此链接https://developers.google.com/drive/api/v3/reference/files/list 上尝试了“试用此 API”工具,该工具使用绑定到我的个人 Google 帐户而不是服务帐户的 OAuth 2.0 ,这也失败了。
查看完整描述

1 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

当我看到您的示例 URL 时https://drive.google.com/drive/folders/1dpl28_lhR1myDL2Y2gYKLRX1gNRlWdFm,我认为在这种情况下,它是一个公共共享文件夹。我认为这可能是您的问题的原因。在这种情况下,如何进行以下修改?

从:

parameters := "?key=" + API_KEY
parameters += "&corpora=drive"
parameters += "&includeItemsFromAllDrives=true"
parameters += "&supportsAllDrives=true"
parameters += "&driveId=" + DRIVE_ID

至:

parameters := "?key=" + API_KEY
parameters := "&q=%271dpl28_lhR1myDL2Y2gYKLRX1gNRlWdFm%27%20in%20parents"
  • q值为'1dpl28_lhR1myDL2Y2gYKLRX1gNRlWdFm' in parents

  • 当您的 API 密钥是有效密钥时,可以使用此修改。如果发生错误,请使用“Try this API”进行测试。参考

笔记:

  • 检索共享 Drive 文件夹的元数据时,driveId返回值中包含 的值。当我测试您的文件夹 ID 时,此值未包含在元数据中。所以我认为您的文件夹可能是 Google Drive 的公开共享文件夹,而不是共享 Drive。


查看完整回答
反对 回复 2022-10-24
  • 1 回答
  • 0 关注
  • 108 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信