web-dev-qa-db-fra.com

La clé API pour GCM est soudainement invalide? Erreur non autorisée (401)

J'ai créé une Android clé d'API pour la notification push GCM pour mon Android application.A partir des deux derniers jours, le serveur GCM renvoie une réponse Unauthorized (401) en PHP.

Existe-t-il une raison pour que Android la clé d'API soit invalide/expire? Ou est-ce que Android la clé d'API est déconseillée par GCM?

Je ne reçois toujours pas d'explication appropriée sur Pourquoi Android est invalide? La plupart d'entre eux préfèrent la clé de serveur à la place de Android pour le MCG, mais sans mentionner quant à pourquoi ne pas utiliser Android clé API.

Pourquoi ne pas utiliser Android Clé API dans GCM? Existe-t-il une limitation pour Android API? Ou Le serveur GCM bloque-t-il la notification/le serveur GCM est en train de faire = Android Clé API invalide si le message de notification dépasse la limite journalière?

25
kumar

Mise à jour : le terme utilisé est de retour à clé de serveur.

Récemment, un jeton de messagerie Firebase Cloud (FCM) est en cours de déploiement. Ceci est visible dans l'onglet Messagerie Cloud de votre console Firebase.


Mise à jour : Il y a maintenant une note visible dans le docs GCM disant:

À partir de septembre 2016, la nouvelle clé de serveur ne peut être créée dans Firebase Console qu'à l'aide de l'onglet Cloud Messaging du panneau Paramètres. Les projets existants devant créer une nouvelle clé de serveur peuvent être importés dans console Firebase sans affecter leur configuration existante.


Update : Il semblerait également que Migrer de GCM vers FCM corrige la issue for 401 Unauthorized Error.

Si vous commencez tout juste à utiliser GCM , au lieu de créer un projet dans la console Google Developers, faites-le dans la console Firebase. Après avoir créé le projet, utilisez simplement la clé de serveur générée automatiquement. Voici les étapes où trouver la clé de serveur:

  1. Allez à votre Console Firebase et cliquez sur CREATE NEW PROJECT.
  2. Entrez le nom de projet souhaité et sélectionnez votre pays. Après cela, le nouveau projet doit être actif.
  3. Ensuite, sur le panneau de gauche, cliquez sur le bouton d'engrenage et sélectionnez Paramètres du projet .
  4. Cliquez ensuite sur l'onglet Cloud-Messaging .

Pour les anciens projets GCM , vous pouvez simplement importer le projet dans la console Firebase:

  1. Allez à votre Console Firebase et cliquez sur IMPORT PROJECT.
  2. Sélectionnez le projet que vous souhaitez importer et votre pays.
  3. Cliquer sur ADD FIREBASE. Après cela, le nouveau projet doit être actif.
  4. Ensuite, sur le panneau de gauche, cliquez sur le bouton d'engrenage et sélectionnez Paramètres du projet .
  5. Cliquez ensuite sur l'onglet Cloud-Messaging .

Pour une raison quelconque, seule une clé de serveur fonctionne maintenant avec GCM. La clé Android n'est pas la seule qui semble invalide, mais toutes les autres clés de l'API client (Navigateur, iOS, Android) le sont.


En ce qui concerne la description de Server Key :

Créez et utilisez une clé de serveur si votre application s'exécute sur un serveur.

Il est logique d'utiliser une clé de serveur puisque vous utilisez la clé d'API sur votre serveur et que celui-ci fonctionne avec le serveur de connexion GCM.

Si vous comparez le documents FCM avec le documents GCM (sous informations d'identification), vous pouvez voir que dans GCM, il n’indique que la clé API, alors que dans FCM, il spécifie déjà une clé de serveur. FCM est la nouvelle version de GCM. Peut-être y a-t-il quelque chose à voir avec cela? Je n'en suis pas si sûr, mais je pense que vous avez l'essentiel de ce que je dis.

Mise à jour : dans les documents GCM, la clé de serveur est maintenant indiquée.


Par défaut, après avoir suivi les étapes Configurer votre projet d'API , une clé d'API de serveur est générée (je l'ai testée en sélectionnant Android app). Même chose avec - firebase-cloud-messaging . Chaque fois que je crée un nouveau projet, il génère simplement une clé de serveur automatiquement.

Espérons qu'il y aura une explication à l'avenir pour expliquer pourquoi.


Allez-y et ajoutez les étapes sur la façon de créer une clé de serveur. Juste au cas où d'autres seraient confus ou que les débutants ne sachent pas comment.

  1. Accédez à votre console Google Developers
  2. Dans le volet de gauche, cliquez sur Credentials
  3. Sous l'onglet Informations d'identification, cliquez sur Create Credentials
  4. Sélectionner API Key

--- La mise à jour dans la console des développeurs coupe l’étape ici ---

  1. Sélectionner Server Key
  2. Remplissez les détails.
  3. Cliquer sur Create

La clé de serveur devrait être disponible d'ici là.


Update : Il semble qu'il y ait eu un changement récent lors de la génération d'une clé API. C'est la même chose jusqu'à l'étape 4 que j'ai mentionnée ci-dessus. Cependant, après avoir sélectionné Clé API, il créera directement une clé API sans demander le type de clé (Serveur, Android, Navigateur, iOS). Cela vous permettra seulement de définir certaines Restrictions qui étaient visibles en fonction de la clé API que vous avez l'intention de générer.


Mise à jour : lors de la création d'une clé d'API sans restriction, un avis (point d'exclamation) indiquant que votre clé d'API est vulnérable est la raison pour laquelle elle est fortement encouragé pour vous ajouter une restriction pour votre clé API. One post avait ce problème et l'ajout d'une restriction permettait de le résoudre.

62
AL.