4 votes

Les identifiants par défaut de l'application asp C# ne sont pas disponibles

J'utilise l'API Google Translate en C#. Le code suivant, exécuté localement sur mon ordinateur, fonctionne, mais en ligne sur un serveur, il génère l'erreur suivante :

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

"Les informations d'identification par défaut de l'application ne sont pas disponibles. Ils sont disponibles s'ils sont exécutés dans Google Compute Engine. Sinon, la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS doit être définie et pointer vers un fichier définissant les informations d'identification. Voir https://developers.google.com/accounts/docs/application-default-credentials pour plus d'informations."

Localement, cela fonctionne simplement en installant Cloud SDK Installer qui effectue tous les réglages, il n'y a pas besoin d'authentification dans le code. Sur le serveur, dois-je utiliser OAuth 2.0 ou les clés de compte de service ?

Quelqu'un peut-il m'aider à résoudre ce problème ?

EDIT : Quelqu'un peut-il me confirmer s'il est nécessaire d'avoir accès au serveur local pour exécuter des commandes en ligne de commande comme ici. https://cloud.google.com/storage/docs/authentication ? Ce serait assez ridicule, au lieu de simplement écrire du code. Par exemple, l'API de Youtube ne nécessite pas d'accès local.

9voto

40-Love Points 1333

Suivez les instructions pour obtenir le fichier json :

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

Alors exécutez d'abord ce code :

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

2voto

Amr Points 41

Pour générer une clé privée au format JSON ou PKCS12 :

  1. Ouvrez la liste des informations d'identification dans la console de la plateforme Google Cloud. OUVRIR LA LISTE DES RÉFÉRENCES
  2. Cliquez sur Créer des informations d'identification.
  3. Sélectionnez Clé de compte de service. Une fenêtre Créer une clé de compte de service s'ouvre.
  4. Cliquez sur la liste déroulante située sous Compte de service, puis cliquez sur Nouveau compte de service.
  5. Saisissez un nom pour le compte de service dans Nom.
  6. Utilisez l'ID de compte de service par défaut ou générez-en un autre.
  7. Sélectionnez le type de clé : JSON ou P12.
  8. Cliquez sur Créer. Une fenêtre Compte de service créé s'affiche et la clé privée pour le type de clé que vous avez sélectionné est téléchargée automatiquement. Si vous avez sélectionné une clé P12, le mot de passe de la clé privée ("notasecret") s'affiche.
  9. Cliquez sur Fermer.

Vous pouvez trouver plus de détails ici https://cloud.google.com/storage/docs/authentication

1voto

MatzeBrei Points 28

Tout est dans le message d'erreur. Vous avez deux possibilités

  • Exécutez le Google Compute Engine sur la machine sur laquelle votre programme est exécuté et saisissez-y vos informations d'identification.

  • Utilisez un compte de service et définissez la variable d'environnement "GOOGLE_APPLICATION_CREDENTIALS" pour faire référence à votre fichier d'informations d'identification (qui est un fichier .json que vous pouvez télécharger depuis la console de développement de Google).

PS : Ne stockez pas votre fichier d'informations d'identification sur le serveur où quelqu'un d'autre pourrait y accéder !

1voto

Amr Points 41

Vous devez télécharger la clé API à partir de

https://console.developers.google.com/iam-admin/serviceaccounts Après cela, téléchargez le fichier .P12 pour l'utiliser dans votre code.

var certificate = new X509Certificate2(@"key3.p12", "notasecret", X509KeyStorageFlags.Exportable) ; notasecret est le mot de passe par défaut

1voto

Nicoara Talpes Points 179

La réponse la plus simple à ma question, pour éviter les paramètres locaux sur le serveur, est la troisième option d'utilisation de l'API de traduction décrite ci-dessous : l'utilisation de clés d'API. Cela signifie qu'il suffit d'envoyer un simple POST à un point de terminaison dont le lien contient la clé API.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X