/ / Quel est le bon moyen de fournir une clé API à une API Google Cloud Endpoints 2 pour une application? - Android, google-app-engine, api-key, google-cloud-endpoints-v2

Quelle est la bonne façon de fournir une clé API à une API Google Cloud Endpoints 2 pour une application? - Android, google-app-engine, api-key, google-cloud-endpoints-v2

J'ai une API dans Google Endpoints et j'aia généré la clé d’API nécessaire à l’application Android sur laquelle je travaille pour accéder à l’API. Cependant, je n’ai aucune idée du lieu où fournir la clé d’API lors de l’utilisation de la bibliothèque de clients générée. J'ai lu également dans SO que cela devrait être indiqué dans l'en-tête, mais le plus proche de la documentation de l'API Google Endpoints est qu'une clé API devrait faire partie de l'URL, ce qui ne semble toutefois pas être le cas si le la demande provient d'un client Android.

Lorsque la clé d’API est supprimée de l’API, touterequête, même curl, est capable de récupérer le résultat attendu. Toute documentation sur la façon dont cela devrait être fait avec des exemples de code sera également très appréciée.

Edit: Je me demande également si Google a lui-même imposé des restrictions sur l’utilisation du SHA-1 android de debug.keystore dans les points de terminaison.

Ps: Ma question précédente à ce sujet était injustement votée à la baisse et la seule réponse reçue concernait les restrictions de pays, ce qui, j'en suis sûr, n'a rien à voir avec cela. Alors peut-être que cette fois je vais reformuler ma question d’une autre manière.

Réponses:

2 pour la réponse № 1

J'ai réussi à faire en sorte qu'au moins un type de clé d'API fonctionne avec une API Google Cloud Endpoints. Voici comment:

1) La clé d’API "utilisable" a été générée en n’ayant aucune restriction (c.-à-d. Pas l’application Android, Web, etc.). Vous pouvez sélectionner des restrictions pour une clé lors de sa création dans la page Informations d'identification de l'API.

2) La clé "utilisable" a été transmise à la bibliothèque de clients générée via la méthode service..setKey (...).

Cela produisit un peu ce que je cherchais;n'autorisant les appels à l'API que par des appelants capables de s'identifier. La raison pour laquelle cela fonctionne (hypothèses complètes et devinettes à partir de ce point) est que la bibliothèque client générée envoie une requête HTTPS à l'API et que, par conséquent, les contrôles d'autorisation doivent ensuite être effectués par l'API (Endpoints Framework) dans le contexte. d'une demande HTTPS, plutôt que dans le contexte d'une application Android.

Si cela est vrai, alors je suis très intéressé à savoir comment une application Android peut faire un appel "correct" à une API avec la bibliothèque client générée.

Mettre à jour: Capture d'écran et code de la configuration actuelle

Dans la console Google Cloud -> API et services -> Informations d'identification entrer la description de l'image ici

Utilisation de la clé API dans le code Java:

// Call to the generated client library for the API
DataCollection dataCollection =  service.getDataAPIMethod()
.setX(...)
.setY(...)
.setZ(...)
.setKey("***")
.execute();