【发布时间】:2020-01-27 18:05:00
【问题描述】:
我正在尝试设置一个非常简单的测试应用程序来连接到我的 Firebase Cloud Firestore 实例。
这是一个在 Windows 7 上使用 .NET Core 3.0 的 C# .NET Core 控制台应用程序
我只是尝试使用我的项目名称连接到我的 Firestore 实例。
我的 GOOGLE_APPLICATION_CREDENTIALS 环境变量设置为 C:\test\creds.json,这是我使用 GCP Console 页面上的“创建密钥”功能为我的默认服务帐户创建的。
当我运行下面的代码时,我收到以下错误:
using Google.Cloud.Firestore;
using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
FirestoreDb db = FirestoreDb.Create("my-proj-id");
}
}
}
例外:
应用程序默认凭据不可用。他们是 如果在 Google Compute Engine 中运行,则可用。否则, 必须定义环境变量 GOOGLE_APPLICATION_CREDENTIALS 指向定义凭据的文件。看 https://developers.google.com/accounts/docs/application-default-credentials 了解更多信息。'
当我运行 ProcessMonitor 来检测文件系统活动时,我的应用程序甚至从未尝试触摸 creds.json 文件,这让我相信 C# Cloud Firestore API 甚至没有找到我的 creds 文件。我已经在用户和系统级别设置了 GOOGLE_APPLICATION_CREDENTIALS 环境变量。
我的配置方式有问题吗?
【问题讨论】:
-
你是怎么得到
GOOGLE_APPLICATION_CREDENTIALS的?你能记录这个string value = Environment.GetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS); -
我没有读取环境变量。根据此链接 (firebase.google.com/docs/firestore/quickstart),在您的开发人员环境中,您只需将 GOOGLE_APPLICATION_CREDENTIALS 设置为密钥文件位置即可对任何请求进行身份验证。
-
@LinkedListT 仅供参考,在 powershell "[System.Environment]::GetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS")" 中生成我的凭据文件的正确路径
-
您实际上是以该用户身份运行的吗? (我们没有任何关于你如何运行它的上下文。)
-
我很困惑。这是 Windows 上的 .NET Core 3.0 控制台应用程序。我以域用户身份登录到 Windows,不确定这是否重要。 Google 开发人员文档说要从 Google Cloud Console 创建一个安全密钥(JSON 文件 - c:\test\creds.json)。我为“App Engine 默认服务帐户”创建了一个密钥,该密钥在 GCP 控制台中列为服务帐户。根据 Google 文档,我将 GOOGLE_APPLICATION_CREDENTIALS 设置为“c:\test\creds.json”。当我尝试从 C# 访问我的实例时,它基本上说找不到凭据,但我看不到 c:\temp\creds.json 的磁盘活动
标签: c# firebase google-cloud-firestore