我发现的所有SpeechClient文档都涉及下载SDK后运行命令行,或者笨拙地设置“GOOGLE_APPLICATION_CREDENTIALS”环境变量以指向本地凭据文件。

我讨厌环境变量方法,而是想要一个从应用程序根目录加载共享的,由源代码控制的dev帐户文件的解决方案。像这样的东西:

var credential = GoogleCredential.FromStream(/*load shared file from app root*/);
var client = SpeechClient.Create(/*I wish I could pass credential in here*/);

有没有一种方法可以使我不必依赖于环境变量?

最佳答案

是的,通过将GoogleCredential转换为ChannelCredentials,并使用它来初始化Channel,然后将其包装在SpeechClient中:

using Grpc.Auth;

//...

GoogleCredential googleCredential;
using (Stream m = new FileStream(credentialsFilePath, FileMode.Open))
    googleCredential = GoogleCredential.FromStream(m);
var channel = new Grpc.Core.Channel(SpeechClient.DefaultEndpoint.Host,
    googleCredential.ToChannelCredentials());
var speech = SpeechClient.Create(channel);

更新2018-02-02 https://cloud.google.com/docs/authentication/production现在显示所有可能的方法来验证Google Cloud Service的身份,包括这样的示例。

关于c# - 是否可以手动向SpeechClient提供Google凭据(在.NET API中)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42865917/

10-10 22:02