asp C#Application Default Credentials不可用

时间:2017-07-18 11:10:36

标签: c# asp.net authentication google-cloud-platform google-translate

我在C#中运行Google Translate API。 在我的计算机上本地运行下一个代码可以正常运行,但在服务器上联机它会引发以下错误:

using Google.Cloud.Translation.V2;
TranslationClient client = TranslationClient.Create();
var response = client.TranslateText(sentence, targetLanguage, sourceLanguage: sourceLanguage);

“应用程序默认凭据不可用。如果在Google Compute Engine中运行,则可以使用它们。否则,必须定义环境变量GOOGLE_APPLICATION_CREDENTIALS,指向定义凭据的文件。有关详细信息,请参阅https://developers.google.com/accounts/docs/application-default-credentials。”

本地只需安装Cloud SDK Installer即可完成所有设置,无需在代码中进行身份验证。 在服务器上,我应该使用OAuth 2.0或服务帐户密钥吗?

有人可以帮助我解决这个问题吗?

编辑:有人可以向我确认是否有必要访问本地服务器以在命令行中运行命令,如https://cloud.google.com/storage/docs/authentication?这将是非常荒谬的,而不仅仅是编写代码。例如,Youtube API不需要本地访问。

5 个答案:

答案 0 :(得分:9)

按照说明获取json文件:

https://cloud.google.com/translate/docs/reference/libraries

然后先运行此代码:

System.Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "c:\mypath\myfile.json");

答案 1 :(得分:2)

以JSON或PKCS12格式生成私钥:

  1. 在Google Cloud Platform Console中打开凭据列表。 OPEN THE LIST OF CREDENTIALS
  2. 点击创建凭据。
  3. 选择服务帐户密钥。创建服务帐户密钥窗口 打开。
  4. 点击服务帐户下方的下拉框,然后点击新服务帐户。
  5. 在名称中输入服务帐户的名称。
  6. 使用默认服务帐户ID或生成其他帐户ID。
  7. 选择密钥类型:JSON或P12。
  8. 单击“创建”。已创建服务帐户     窗口显示,键的私钥为您     选中自动下载。如果您选择了P12键,则     显示私钥的密码(" notasecret")。
  9. 点击关闭。
  10. 您可以在此处找到更多详细信息 https://cloud.google.com/storage/docs/authentication

答案 2 :(得分:1)

全部在错误消息中。你有两个选择

  • 在运行程序的计算机上运行Google Compute Engine并在其中输入凭据。

  • 使用服务帐户并设置" GOOGLE_APPLICATION_CREDENTIALS"环境变量,用于引用您的凭证文件(可以从google开发人员控制台下载的.json文件。)

PS:不要将您的凭证文件存储在服务器上任何其他人可以访问的位置!

答案 3 :(得分:1)

您必须从

下载API密钥

https://console.developers.google.com/iam-admin/serviceaccounts 之后下载.P12文件文件,在代码中使用它

var certificate = new X509Certificate2(@“key3.p12”,“notasecret”,X509KeyStorageFlags.Exportable); notasecret是默认密码

答案 4 :(得分:1)

我的问题最简单的答案是避免服务器上的本地设置,这是使用下面描述的Translation API的第三种选择:使用API​​密钥。 这意味着只需对链接中具有API密钥的端点进行简单的POST。

https://cloud.google.com/docs/authentication/#getting_credentials_for_server-centric_flow https://cloud.google.com/docs/authentication/api-keys