可以手动向SpeechClient提供GoogleCredential(在.NET API中)吗?

时间:2017-03-17 19:43:47

标签: c# .net google-cloud-platform google-speech-api

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

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

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

有没有办法做到这一点,以便我不必依赖环境变量?

2 个答案:

答案 0 :(得分:13)

是的,将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进行身份验证的所有可能方式,包括此类示例。

答案 1 :(得分:1)

在最新版本中 SpeechClient.Create 没有任何参数。

现在可以使用 SpeechClientBuilder 来实现:

var client = new SpeechClientBuilder { ChannelCredentials = credentials.ToChannelCredentials() }.Build();