Firestore:如何设置 GOOGLE_APPLICATION_CREDENTIALS?
Posted
技术标签:
【中文标题】Firestore:如何设置 GOOGLE_APPLICATION_CREDENTIALS?【英文标题】:Firestore: how to set up GOOGLE_APPLICATION_CREDENTIALS? 【发布时间】:2021-02-10 12:19:00 【问题描述】:我正在关注 official Google docs 从 android 应用 (Xamarin) 访问 Firestore。每次我尝试访问 firestore 时,都会出现以下异常:
System.InvalidOperationException:应用程序默认凭据不可用。如果在 Google Compute Engine 中运行,它们就可用。否则,必须定义环境变量 GOOGLE_APPLICATION_CREDENTIALS 指向定义凭据的文件。请参阅https://developers.google.com/accounts/docs/application-default-credentials/ 了解更多信息。
例外情况很明显。我必须设置环境变量。所以我运行了以下 PowerShell 命令:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:/Foo/Bar/google-services.json"
那没用。也许 json 文件必须在 Android 设备上。我将 json 文件设置为“嵌入式内容”,并在访问数据库之前将以下行插入应用程序(使用 System,使用 System.IO):
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", Path.Combine(Environment.CurrentDirectory, @"../../Firestore/google-services.json"));
这将异常更改为“路径无效”。如何获取 json 文件的路径?这是我的层次结构:
【问题讨论】:
【参考方案1】:如果你的方法不起作用:
根据Getting Started with Authentication,可以通过命令提示符设置
set GOOGLE_APPLICATION_CREDENTIALS=[PATH]
你可以试试这个方法
开始 -> 这台电脑(右键单击我的电脑)-> 属性 -> 在左侧面板中,您会发现
高级系统设置 -> 环境变量
然后为#UserName#添加用户变量和系统变量:
点击New它将为您提供弹出窗口并提供
变量名称: GOOGLE_APPLICATION_CREDENTIALS
变量值:只需提供 Json 文件的路径即可。它将自动设置为应用程序默认值。
您可以使用给定按钮选择文件:
即使在 Github 问题上 Jon Skeet 在他的 answer 中进行了解释
【讨论】:
我添加了变量并得到 System.InvalidOperationException: 'Error reading credential file from location (my path here)'。我提供了一个绝对路径。我应该使用相对路径吗?相对于什么? 您可以从文件设置-> 属性-> 安全复制路径 我正在使用这个路径:"D:\\Android\AndroidSandbox\AndroidSandbox\Firestore\google-services.json" 仍然得到 System.InvalidOperationException。 @Bip901 我张贴图片帮助您理解,使用该按钮您可以选择文件并保存路径 不幸的是,错误仍然存在。不过,我非常感谢您的帮助 - 如果一段时间后没有其他答案发布,我会接受此答案。以上是关于Firestore:如何设置 GOOGLE_APPLICATION_CREDENTIALS?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Flutter 配置 Firebase Firestore 设置
如何在flutter中将具有文档ID的自定义对象设置为firestore中的集合?