【问题标题】:C# Application Default Credentials not availableC# 应用程序默认凭据不可用
【发布时间】: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


【解决方案1】:

如果您使用的是 Visual Studio,只需关闭并重新打开它。

似乎如果您在 Visual Studio 打开时创建/更改环境变量,您将运行/调试的程序将无法看到它们。您必须退出 Visual Studio 并重新进入(发生在我身上:VS 2019 ver. 16.7.2,Win 10 ver. 2004 - OS Build 19041.450)

【讨论】:

    猜你喜欢
    • 2017-12-23
    • 2018-04-06
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多