Ruby接入Google Firestore报错:无法加载默认凭证,如何获取密钥文件?
解决Ruby接入Firestore时的凭证加载问题
我来帮你搞定这个凭证文件的获取问题——其实它藏在Firebase控制台的项目设置里,你可能没找到正确的入口,步骤很简单:
- 打开Firebase控制台,进入你的
jg-jai-dev项目 - 点击左侧导航栏底部的齿轮图标(项目设置)
- 切换到「服务账号」标签页
- 找到「Firebase Admin SDK」区域,点击生成新的私钥按钮
- 在弹出的确认窗口里点击「生成密钥」,浏览器会自动下载一个JSON格式的文件,这就是你需要的
keyfile.json
拿到文件后,有两种方式在Ruby代码里使用它:
方式一:直接在代码里指定路径
把下载的JSON文件放到你的项目目录下(比如根目录),然后修改测试代码:
it 'do something with firestore', focus: true do firestore = Google::Cloud::Firestore.new( project_id: 'jg-jai-dev', credentials: "./keyfile.json" # 这里填文件的正确路径 ) end
方式二:使用环境变量(推荐,更安全)
设置环境变量来指定凭证文件路径,这样代码里不用硬写敏感信息:
# Linux/macOS终端里执行 export GOOGLE_APPLICATION_CREDENTIALS="/full/path/to/your/keyfile.json"
之后你的测试代码就可以回到最初的写法,不用传credentials参数:
it 'do something with firestore', focus: true do firestore = Google::Cloud::Firestore.new(project_id: 'jg-jai-dev') end
至于你之前遇到的RuntimeError: Could not load the default credentials错误,原因是Google的SDK默认会尝试从环境变量、Google Cloud服务器元数据等位置自动加载凭证,但你的本地开发环境没有这些配置,所以必须手动提供服务账号的密钥文件。
内容的提问来源于stack exchange,提问作者David Cruwys
相关产品推荐
相关产品推荐

