2

我编写了一个 Golang 程序,旨在解析 scv 文件并将数据上传到 FireStore,该程序旨在与只编写 scv 路径以上传信息的人共享。

我正在使用它来使用 firebase-admin:

opt := option.WithCredentialsFile("path/to/serviceAccountKey.json")

当我这样做时,这种方法效果很好:

$ go run main.go

但是当我构建项目并执行二进制文件时,我得到了这个:

$ cannot read credentials file: open firebase-config.json: no such file or directory 

我确实读过这种方法,但这也意味着共享firebase-config.json,这个 Go 程序的想法只是共享可执行文件而没有任何其他文档。

有没有办法像这样直接使用 json 构建包含 json 的程序或验证 firebase-admin?:

opt := option.WithCredentials({< authentication json >})

我没有找到使用此方法WithCredential的文档或示例。

4

3 回答 3

1

对我来说,我使用 $GOPATH 来解决这个问题

  1. 例如我的 $GOPATH 是/home/Frank/work
  2. 我把我的 .json 文件放在/home/Frank/work/myfile.json
  3. 我将代码更改为

    opt := option.WithCredentialsFile("/home/Frank/work/myfile.json")

不知何故,它起作用了。:D

于 2018-11-27T17:29:14.257 回答
0

我不知道这是否是解决此问题的最佳方法,但这就是我这样做的方式:

  1. 我决定将此脚本可执行文件放入/opt/< dir-name >/bin
  2. 我写了一个额外的函数来创建 auth .json /opt/< dir-name >/auth.json
  3. 所有脚本都使用这个/opt/< dir-name >/auth.json文件执行
  4. 我写了另一个函数,它在执行结束时删除auth.json

所以,现在我可以这样做:

var file string = "/opt/< dir-name >/auth.json" 
sa := option.WithCredentialsFile(file)

现在我可以使用指令“安装到/opt/< dir-name>/bin并将其添加到您的$PATH ”来共享此脚本

于 2018-08-01T17:42:24.110 回答
0

firebase-admin在尝试使用 Go 将使用 Node 编写的 Google Cloud Functions 移动到 Google Cloud Run (GCR) 时,我遇到了这个确切的问题。具体来说,错误初始化应用程序错误:无法读取凭据文件:打开./firebase.json:没有这样的文件或目录

我不知道为什么,但是当我将容器推送到 GCR 时,JSON 文件丢失了,我无法连接到firebase-admin. 我猜这很像你说的,Go 程序在理论上应该是自包含的。

我相信我找到了适合我需求的解决方案,希望对您有所帮助。

opt := option.WithCredentialsJSON([]byte(`{"some": "json"}`))

这确实意味着将 JSON 文件放入一个字符串中,这绝对不应该在所有情况下都有效。但是,由于firebase.json文件通常很小,对于这个用例 IMO 来说应该没问题。

引导我走这条路的链接,如果这些链接更改或中断,请留在最后:

于 2019-12-16T16:04:20.070 回答