我正在尝试使用服务帐户凭据文件(我根据文档创建)连接到我帐户上的 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 时是否存在问题...
关于c# - Google Datastore 身份验证问题 - C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42759933/