构建包含Firebase凭证文件.json的golang

时间:2018-07-20 14:02:12

标签: firebase go firebase-authentication go-build

我已经编写了一个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 

我做了read this approach,但这也意味着也要共享 firebase-config.json , 这个Go程序的想法就是共享可执行文件,而无需任何其他文档。

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

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

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

3 个答案:

答案 0 :(得分:0)

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

  1. 我决定将该脚本可执行文件放入 / opt / <目录名> / bin
  2. 我写了一个额外的函数来创建auth .json / opt / <目录名> /auth.json
  3. 所有脚本都使用此 / opt / <目录名称> /auth.json 文件
  4. 执行
  5. 我写了另一个函数,当执行结束时删除 auth.json

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

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

现在,我可以与指令“安装到 / opt / <目录名> / bin 中并将其添加到您的 $ PATH ”中共享此脚本

>

答案 1 :(得分:0)

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

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

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

以某种方式起作用。 :D

答案 2 :(得分:0)

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

我不确定为什么,但是当我将容器推到GCR时,JSON文件丢失了,无法连接到firebase-admin。我猜想就像您在说,Go程序在理论上应该是独立的。

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

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

这确实意味着将JSON文件压缩为一个字符串,这绝对不能在所有情况下都起作用。但是,由于 firebase.json 文件通常很小,因此对于这种用例IMO应该没问题。

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