【发布时间】:2021-03-19 06:44:34
【问题描述】:
在过去的几天里,这一直是令人沮丧的根源,因为文档听起来应该很简单。
我有一个在本地运行的简单 HTTP 服务器(最终是 Heroku),我想将其用作将文件上传到 Firebase 云存储的传递。我有一个凭据文件,并且能够成功初始化 Firebase 应用程序并验证 JWT,但是当我尝试放置一个对象时,我总是会收到错误消息。
这里是代码--
func main() {
config := &firebase.Config{
ProjectID: "myproject-id",
StorageBucket: "myproject-id.appspot.com",
}
credentialsJSON := os.Getenv("GOOGLE_CREDENTIALS")
creds := google.Credentials{JSON: []byte(credentialsJSON)}
opt := option.WithCredentials(&creds)
app, err := firebase.NewApp(context.Background(), config,
opt)
if err != nil {
log.Fatalln(err)
}
ctx, cancel := context.WithTimeout(context.Background(), time.Second*50)
defer cancel()
client, err := app.Storage(ctx)
if err != nil {
log.Fatalln(err)
}
fmt.Println(client)
bucket, err := client.DefaultBucket()
object := bucket.Object("foo.png")
wc := object.NewWriter(ctx)
r, err := os.Open("/Users/foo/test.png")
defer r.Close()
if _, err = io.Copy(wc, r); err != nil {
log.Error(err)
}
if err := wc.Close(); err != nil {
fmt.Println(err)
log.Error(err)
}
}
但这就是我运行这段代码时得到的——
Post "https://storage.googleapis.com/upload/storage/v1/b/myproject-id.appspot.com/o?alt=json&name=foo.png&prettyPrint=false&projection=full&uploadType=multipart": oauth2: Transport's Source is nil
Firebase Admin SDK 文档明确指出服务帐户对存储帐户具有完全范围控制,但由于传输令牌源为 nil,因此正确引导凭据似乎存在一些错误。
【问题讨论】:
标签: firebase go google-cloud-storage firebase-admin