【发布时间】:2019-05-15 14:59:03
【问题描述】:
我目前正在尝试访问云 API,但收到此错误:
应用程序默认凭据不可用。如果在 Google Compute Engine 中运行,它们就可用。否则,必须定义环境变量 GOOGLE_APPLICATION_CREDENTIALS 指向定义凭据的文件。
我已经进入我的谷歌云平台帐户,启用计费,创建服务帐户,下载 JSON 密钥并在我的环境变量中设置 GOOGLE_APPLICATION_CREDENTIALS 并检查它是否指向正确的 JSON 密钥。它指向我的 API 密钥 'C:\Users\jade.wilson\source\repos\CloudApi\CloudApi\Services\Keys\CloudAPIKey.json'
这是代码:
var credential = GoogleCredential.GetApplicationDefault();
var channel = new Grpc.Core.Channel(SpeechClient.DefaultEndpoint.ToString(), credential.ToChannelCredentials());
var client = SpeechClient.Create(channel);
response = await client.RecognizeAsync(new RecognitionConfig()
{
Encoding = RecognitionConfig.Types.AudioEncoding.Linear16,
SampleRateHertz = 16000,
LanguageCode = "en",
}, RecognitionAudio.FromStream(audio));
它没有超过第一行。我还有什么遗漏的吗?
【问题讨论】:
-
你遇到了什么错误?
-
@TheChubbyPanda 应用程序默认凭据不可用。如果在 Google Compute Engine 中运行,它们就可用。否则,必须定义环境变量 GOOGLE_APPLICATION_CREDENTIALS 指向定义凭据的文件。
-
抱歉,在问题中错过了这一点,我会推荐一个编辑。
-
确保您没有错字。你是如何执行你的程序的 - 你已经指定了一个基于你的主目录的路径,所以通常你需要以该用户身份登录才能拥有该文件的权限。
-
您能告诉我们您如何准确地设置
GOOGLE_APPLICATION_CREDENTIALS吗?如果设置了该环境变量,我希望您在文件错误等情况下得到不同的错误。(我可能在这方面错了,请注意。)如果您在启动时登录Environment.GetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS"),你呢?看到你期望的价值了吗? (我的猜测是您已经为一个用户设置了环境变量,但没有为运行代码的用户设置。)另外请注意,仅使用var client = SpeechClient.Create();是使用默认端点和默认凭据的简单方法。
标签: c# asp.net google-cloud-platform