婷婷同學(xué)_
2022-10-24 16:31:28
我正在使用服務(wù)帳戶連接到我個(gè)人 Google 帳戶中的共享驅(qū)動(dòng)器。Google Drive API 總是返回一個(gè)錯(cuò)誤,指出找不到共享驅(qū)動(dòng)器。我嘗試了這兩個(gè):向知道鏈接的任何人公開(kāi)共享云端硬盤(pán)使用服務(wù)帳戶的電子郵件地址為特定用戶(服務(wù)帳戶)添加權(quán)限共享驅(qū)動(dòng)器的鏈接采用這種格式https://drive.google.com/drive/folders/xyz 我假設(shè) driveId 是鏈接的最后一部分,xyz?還是那個(gè)文件夾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))這是該程序運(yùn)行時(shí)的輸出:{ "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”工具,該工具使用綁定到我的個(gè)人 Google 帳戶而不是服務(wù)帳戶的 OAuth 2.0 ,這也失敗了。
1 回答

catspeake
TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
當(dāng)我看到您的示例 URL 時(shí)https://drive.google.com/drive/folders/1dpl28_lhR1myDL2Y2gYKLRX1gNRlWdFm
,我認(rèn)為在這種情況下,它是一個(gè)公共共享文件夾。我認(rèn)為這可能是您的問(wèn)題的原因。在這種情況下,如何進(jìn)行以下修改?
從:
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
。當(dāng)您的 API 密鑰是有效密鑰時(shí),可以使用此修改。如果發(fā)生錯(cuò)誤,請(qǐng)使用“Try this API”進(jìn)行測(cè)試。參考
筆記:
檢索共享 Drive 文件夾的元數(shù)據(jù)時(shí),
driveId
返回值中包含 的值。當(dāng)我測(cè)試您的文件夾 ID 時(shí),此值未包含在元數(shù)據(jù)中。所以我認(rèn)為您的文件夾可能是 Google Drive 的公開(kāi)共享文件夾,而不是共享 Drive。
- 1 回答
- 0 關(guān)注
- 150 瀏覽
添加回答
舉報(bào)
0/150
提交
取消