Reputation: 720
I am running Google Translate API in C#. Running locally on my computer the next code works, but online on a server it throws the following error:
using Google.Cloud.Translation.V2;
TranslationClient client = TranslationClient.Create();
var response = client.TranslateText(sentence, targetLanguage, sourceLanguage: sourceLanguage);
"The Application Default Credentials are not available. They are available if running in Google Compute Engine. Otherwise, the environment variable GOOGLE_APPLICATION_CREDENTIALS must be defined pointing to a file defining the credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information."
Locally this runs just by installing Cloud SDK Installer which does all the settings, there is no need for authentication in code. On the server, should I use instead OAuth 2.0 or Service account keys ?
Can someone assist me on how to solve this?
EDIT: Can someone confirm to me if it is necessary to have access to the local server to run commands in command line like here https://cloud.google.com/storage/docs/authentication ? This would be pretty ridiculous, instead of just writing code. For example Youtube API does not require local access.
Upvotes: 12
Views: 14345
Reputation: 52416
Follow directions to get json file:
https://cloud.google.com/translate/docs/reference/libraries
Then run this code first:
System.Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "c:\mypath\myfile.json");
Upvotes: 33
Reputation: 76
To generate a private key in JSON or PKCS12 format:
You can find more details here https://cloud.google.com/storage/docs/authentication
Upvotes: 4
Reputation: 720
The easiest answer to my question , to avoid local settings on the server, is the third option of using the Translation API described below: using API keys. This means just a simple POST to an endpoint that has the API key in the link.
https://cloud.google.com/docs/authentication/#getting_credentials_for_server-centric_flow https://cloud.google.com/docs/authentication/api-keys
Upvotes: 1
Reputation: 76
You must download API key from
https://console.developers.google.com/iam-admin/serviceaccounts After that download .P12 file file to use it in your code
var certificate = new X509Certificate2(@"key3.p12", "notasecret", X509KeyStorageFlags.Exportable); notasecret is default password
Upvotes: 1
Reputation: 63
Its all in the errormessage. You have two options
Run the Google Compute Engine on the machine you have your program running on and input your credentials there.
Use a service account and set the "GOOGLE_APPLICATION_CREDENTIALS" environment variable to reference your credentials file (which is a .json file that you can download from the google developer console.)
PS: Do not store your credentials file anywhere on the server where it may be accessed by someone else!
Upvotes: 1