我在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不需要本地访问。
答案 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格式生成私钥:
您可以在此处找到更多详细信息 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