2017-03-17 144 views
1

我發現的所有SpeechClient文檔都涉及到在下載SDK後運行命令行,或者笨拙地設置「GOOGLE_APPLICATION_CREDENTIALS」環境變量以指向本地憑證文件。是否可以手動將GoogleCredential提供給SpeechClient(在.NET API中)?

我討厭環境變量的方法,而是希望從應用程序根加載共享的,源代碼管理的開發者賬戶文件的解決方案。這樣的事情:

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

有沒有辦法做到這一點,使我不必依賴環境變量?

+0

除Jeffrey的回答外,請參閱https://googlecloudplatform.github.io/google-cloud-dotnet/docs/faq.html –

回答

10

是,通過將GoogleCredentialChannelCredentials,並用它來初始化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年2月2日https://cloud.google.com/docs/authentication/production現在顯示他們全部可能的方式向Google雲服務進行身份驗證,包括此類示例。

+0

ToChannelCredentials()來自哪裏?我顯然錯過了一個參考或不同的版本。 – Colin

+1

我想通了。我不得不引用命名空間Grpc.Auth來獲取擴展方法。 – Colin

+0

您還需要安裝Grpc.Auth Nuget包。 –

相關問題