问题描述
我正在遵循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文件设置为“ Embedded Content”,然后在访问数据库之前(使用System,使用System.IO)将以下行插入到应用程序中:
Environment.SetEnvironmentvariable("GOOGLE_APPLICATION_CREDENTIALS",Path.Combine(Environment.CurrentDirectory,@"../../Firestore/google-services.json"));
这将异常更改为“路径无效”。如何获取json文件的路径?这是我的层次结构:
解决方法
如果您的方法不起作用:
根据Getting Started with Authentication,您可以使用命令提示符进行设置
set GOOGLE_APPLICATION_CREDENTIALS=[PATH]
您可以尝试此方法
开始-> 此Pc (在我的电脑上单击鼠标右键)-> 属性->在左侧面板上,您将找到
高级系统设置-> 环境变量
然后为#UserName#和系统变量添加用户变量:
单击新建,它将弹出并提供
变量名: GOOGLE_APPLICATION_CREDENTIALS
变量值::仅提供Json File的路径。它将自动设置为默认应用。
您可以使用给定的按钮选择文件: