Google 数据存储身份验证问题 - C#

Google Datastore authentication issue - C#

我正在尝试使用服务帐户凭据文件(我根据文档创建)连接到我帐户上的 Google 数据存储,但我在尝试时遇到身份验证错误插入实体:

Grpc.Core.RpcException: Status(StatusCode=Unauthenticated, Detail="Exception occured in metadata credentials plugin.")

我的代码是:

var db = DatastoreDb.Create("myprojectid");
Entity entity = new Entity{
 Key = db.CreateKeyFactory("mykindname").CreateIncompleteKey()
};
var keys = await db.InsertAsync(new[] { entity });

GOOGLE_APPLICATION_CREDENTIALS 变量引用凭据文件,当调用 GoogleCredential.GetApplicationDefaultAsync() 以查看凭据对象是否有效时,它看起来确实不错。 ..

我看到一些较早的示例将 GetApplicationDefaultAsync 函数与某些 DatastoreService 对象一起使用 - 但我找不到 DatastoreService 对象(可能它在旧版本中就存在.. .) 在最新的 .Net API: Google.Cloud.Datastore.V1

请注意,我不想使用其他身份验证方法:

1) 使用 gcloud 客户端。

2) 运行 来自 Google 环境(例如应用引擎)。

知道如何解决这个问题吗?

在 Jon Skeet 的大力帮助下,问题得以解决。

如果您没有引用所有必需的数据存储 dll,可能会出现身份验证问题。确保项目中引用的所有 dll 都是 运行 对数据存储的调用。

我已经通过 NuGet 添加了 Google 数据存储库库到我的测试项目中,一切正常!

请注意,在这种情况下,建议启用 gRPC 日志记录。 `(例如:GrpcEnvironment.SetLogger(new ConsoleLogger()),您可能会看到加载多个 dll 时是否存在问题...

如果您的系统时钟明显不正确,则可能会破坏身份验证。检查您的系统时间,并在必要时修复它,然后再次尝试针对数据存储进行身份验证。