我想上傳檔案并與從 ServiceAccount Golang 到 GoogleDrive 的任何人共享。但我被這個錯誤困住了。
- 我的代碼:
package main
import (
"fmt"
"golang.org/x/net/context"
"google.golang.org/api/drive/v3"
"google.golang.org/api/googleapi"
"google.golang.org/api/option"
"log"
"os"
)
func main() {
srv, err := drive.NewService(context.Background(), option.WithCredentialsFile("key.json"))
if err != nil {
log.Fatal("Unable to access Drive API:", err)
}
filename := "./lemon.txt"
file, err := os.Open(filename)
if err != nil {
log.Fatalln(err)
}
stat, err := file.Stat()
if err != nil {
log.Fatalln(err)
}
defer file.Close()
res, err := srv.Files.Create(
&drive.File{
Parents: []string{"17n-EpJcGg0DmmWqSoJ75iIUdXDP7neoH"},
Name: "banana.txt",
Permissions: []*drive.Permission{
{
Role: "reader",
Type: "anyone",
},
},
},
).Media(file, googleapi.ChunkSize(int(stat.Size()))).Do()
if err != nil {
log.Fatalln(err)
}
fmt.Printf("%s\n", res.Id)
}
- 錯誤:[獲取 403][1][1]:https://i.stack.imgur.com/mzwxv.png
uj5u.com熱心網友回復:
當我看到您的腳本時,似乎在上傳文本檔案時,權限資料包含在元資料中。不幸的是,這不能使用。我認為這是您的問題與writable. 在這種情況下,檔案上傳后,請使用“權限:創建”。當你的腳本被修改時,下面的修改呢?
從:
res, err := srv.Files.Create(
&drive.File{
Parents: []string{"17n-EpJcGg0DmmWqSoJ75iIUdXDP7neoH"},
Name: "banana.txt",
Permissions: []*drive.Permission{
{
Role: "reader",
Type: "anyone",
},
},
},
).Media(file, googleapi.ChunkSize(int(stat.Size()))).Do()
if err != nil {
log.Fatalln(err)
}
fmt.Printf("%s\n", res.Id)
至:
res, err := srv.Files.Create(
&drive.File{
Parents: []string{"17n-EpJcGg0DmmWqSoJ75iIUdXDP7neoH"},
Name: "banana.txt",
},
).Media(file, googleapi.ChunkSize(int(stat.Size()))).Do()
if err != nil {
log.Fatalln(err)
}
fmt.Printf("%s\n", res.Id)
res2, err := srv.Permissions.Create(res.Id, &drive.Permission{
Role: "reader",
Type: "anyone",
}).Do()
- 通過這種修改,上傳的文本檔案被公開共享。
筆記:
從您的評論來看
I already share my parent_id folder (the folder I want to upload files and share with anyone) with the service_account email as editor permission.,如果您想將文本檔案上傳到公共共享檔案夾"17n-EpJcGg0DmmWqSoJ75iIUdXDP7neoH",我認為也可以使用以下修改后的腳本。因為,在這種情況下,將文本檔案上傳到公共共享檔案夾時,上傳的文本檔案與該檔案夾具有相同的權限。res, err := srv.Files.Create( &drive.File{ Parents: []string{"17n-EpJcGg0DmmWqSoJ75iIUdXDP7neoH"}, Name: "banana.txt", }, ).Media(file, googleapi.ChunkSize(int(stat.Size()))).Do() if err != nil { log.Fatalln(err) } fmt.Printf("%s\n", res.Id)
參考:
- 權限:創建
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/512021.html
標籤:去谷歌驱动API
下一篇:使用swig包裝的c 庫和go
