Google Play Game Services – impossible de se connecter

Juste après la keynote Google I / O d’hier, j’ai mis à jour mon SDK Android pour intégrer les services de jeu dans l’une de mes applications.

Les choses que j’ai faites jusqu’ici:

  1. ajouté et lié mon application dans la console de développement (services de jeu)
  2. inclus l’identifiant du client OAuth dans mon application / manifeste
  3. Ajout de BaseGameActivity et GameHelper à mon projet (à partir de GitHub )
  4. ajouté la bibliothèque google-play-services à mon projet
  5. BaseGameActivity étendu, ajouté un com.google.android.gms.common.SignInButton

J’ai également mis en place des métadonnées de jeu et, bien sûr, quelques réalisations. La console de développement indique qu’il est prêt à être lancé. Pour tester le stream de connexion et les réalisations, j’ai ajouté deux comptes Google+ en tant qu’utilisateurs de test.

Mais quand je teste le SignInButton, une alerte apparaît: Erreur inconnue . Voici le logcat:

 ERROR/Volley: il.a: Unexpected response code 403 for https://www.googleapis.com/games/v1/players/me ERROR/SignInIntentService: Access Not Configured ERROR/LoadSelfFragment: Unable to sign in - application does not have a registered client ID 

J’ai construit mon application en mode production – en utilisant ProGuard et le bon certificate.

Ai-je manqué quelque chose?

Mise à jour – quelques tentatives supplémentaires

Voici un bref aperçu de ce que j’ai essayé entre-temps. Rien n’a aidé.

  • supprimer et recréer l’entrée d’application Android liée (empreinte de certificate à double vérification)
  • désactiver l’antipiratage
  • sauter proguard
  • créer un nouveau jeu (test) et utiliser son identifiant client

Le problème n’est pas lié à la section des comptes pour les tests . L’utilisation d’un compte qui n’est pas activé pour les tests entraînera un autre message d’erreur:

 E/GameAgent: Unable to resortingeve 1P application 547xxxxxx457 from network E/CheckGameplayAcl: Unable to load metadata for game 

Solution de Hartok!

La solution de Hartok m’a beaucoup aidé à résoudre ce problème. Je n’ai jamais visité la console des API Google auparavant. Il est important de savoir que l’ID client OAuth n’est pas supprimé lorsque vous supprimez une application liée de votre jeu ou même supprimez un jeu (dans la console de développement). Vous devez visiter la console des API et la supprimer manuellement.

L’empreinte SHA1 sélectionnée automatiquement est (toujours) incorrecte! Vous devez rechercher les vôtres:

 keytool -exportcert -alias  -keystore  -list -v 

Le nouvel identifiant client de mon application (correctement) liée ressemblait à 89xxxxxxxx73-2u6mXXXXXXXXXXXXXXXXXXX8903.apps.goo... , pas seulement 12 chiffres comme auparavant. J’ai finalement compris que vous devez exclure le tableau de bord et les éléments alphanumériques et que vous devez utiliser uniquement les 12 chiffres.

J’ai corrigé ce problème.

Dans mon cas, lorsque j’ai lié mon application (non encore publiée) à mon projet Google Play Game Services, l’empreinte digitale sélectionnée automatiquement par Google Play n’était pas la bonne.

Pour résoudre ce problème, j’ai supprimé l’ID client de mon application sur la console Google APIs , dissocié mon application, puis rétabli le lien avec le bon certificate d’empreinte digitale. Cette empreinte est affichée lors de l’exportation de votre application dans Eclipse (si votre plug-in ADT est à jour).

J’espère que cela aide.

Après deux longues semaines à essayer de résoudre ce problème, j’ai créé des étapes pour résoudre ce problème et j’ai décidé de le partager avec tous ceux qui souffrent du même problème, sans publier le jeu. il est utilisé pour les tests. Au moment de la publication, je partagerai les étapes de publication de l’application et je m’assurerai qu’elle fonctionne avec le service de jeu de Google.

notez que tout ce que j’essayais de faire était de vous connecter en utilisant le bouton de connexion Google sans aucune action sur ce qui devrait arriver après la signature, notez également que j’ai utilisé BaseGameUtils de l’exemple de Google en tant que bibliothèque et mon IDE de choix pour faire tout cela était Eclipse.

Voici les étapes une par une en utilisant eclipse:

1-import BaseGameUtils en tant que bibliothèque dans votre espace de travail Eclipse, assurez-vous qu’aucune erreur ne se produit après l’importation. Si une erreur s’est produite, procédez comme suit:

a- clic droit sur le projet BaseGameUtil dans l’explorateur de projet

b-Cliquez sur le chemin de construction Java

c-Cliquez sur Ajouter des fichiers JAR externes pour accéder à votre emplacement SDK et recherchez Google-Play-services.jar

d-sélectionnez-le et cliquez sur ok —> vous devriez voir le jar ajouté dans la fenêtre des dossiers JAR et des classes.

e-Aller à l’onglet Ordre et exportation, sur le côté droit des bibliothèques et assurez-vous que “bibliothèques privées Android” et “Dépendances Android” sont également cochées pour s’assurer que google-play-services.jar est sélectionné.

2- Maintenant, assurez-vous de bien référencer votre BaseGameUtility imscope dans l’application que vous souhaitez utiliser. “Vous pouvez créer une application hello world simple pour tester ceci”. Nous allons maintenant référencer BaseGameUtility dans l’application hello world comme suit:

(Assurez-vous que tous les deux hello world et BaseGameUtil sont tous deux dans le même lecteur, deux disques ne fonctionneront pas)

Faites un clic droit sur l’application hello world dans la partie droite de l’explorateur de projet.

b-cliquez sur le chemin de construction Java

Cliquez sur les bibliothèques

d- append le support Android-v4 si nécessaire à partir d’une source externe ou interne (non requirejs)

e- ajoutez les utilitaires .jard du jeu de base en cliquant sur le dossier add class -> puis sélectionnez le BaseGameUtilProject — Sélectionnez ensuite le dossier / bin –Il doit l’importer dans votre application

f-add google-play-services.jar à partir d’une source externe également si nécessaire

Dans “commande et exportation”, assurez-vous que vous avez sélectionné —> “Bibliothèques privées Android, dépendances Android, BasegameUtils.jar, GooglePlayGameServices.jar” ainsi que le SRC normal et GEN à sélectionner par défaut.

3- maintenant dans votre fichier java helloworld.java assurez-vous que votre écran principal a toutes les importations requirejses, puis étendez le BaseGameUtil et assurez-vous que le projet implémente ViewOnClickListener.

4- Modifiez votre manifeste Android pour inclure les éléments suivants:

   

et

  

5- Assurez-vous d’avoir un fichier ids.xml dans votre ressource pour inclure votre ID d’application après sa création.

  

Vous pouvez le laisser vide pour l’instant car plus tard vous devrez y placer l’ID de l’application

6-Copiez la clé de débogage que vous avez sur votre EDI Eclipse avant d’append cette application dans la console du développeur. le faire en éclipse se passe comme suit:

a-cliquez sur la fenêtre b- sélectionnez android c-Click comstackz d-copy l’empreinte SHA1 et conservez-la pour l’utiliser lors de la création de votre application dans la console Developers.

7- Créez votre jeu dans la console des développeurs et utilisez le SHA1 récupéré à l’étape 6.

8- placez l’ID d’application dans le fichier ids.xml mis en évidence à l’étape 5

9- vérifiez vos valeurs et assurez-vous que les noms des packages sont corrects entre la console des développeurs et le fichier manifeste.

  

10- Lorsque vous avez terminé, assurez-vous que l’application dans la console du développeur correspond au SHA1 atsortingbué dans la console du développeur à l’aide de l’outil keytool. C’est l’étape qui m’a pris 2 semaines pour comprendre

a- localisez votre application APK dans le dossier bin de votre projet hello world et copiez-la dans un autre emplacement pour vérifier son identifiant avec l’outil clé plus tard

b-localiser votre keytool -> généralement situé dans le dossier JAVA de votre ordinateur, dans mon cas, il était sous C: \ Program Files \ Java \ jdk1.7.0_09 \ jre \ bin

c- Extraire votre apk dans l’emplacement temp

d- lance la commande suivante

keytool -printcert -file “TempLocation \ Meta-INF \ CERT.RSA”

vous obtiendrez un MD5 avec SHA1 et SHA256

Assurez-vous que le SHA1 correspond à celui de la console des développeurs.

11- Voici comment vérifier votre SHA1 depuis la console des développeurs,

a- go to Game Services

b- cliquez sur le nom du jeu dans notre cas helloWorld

c- Faites défiler jusqu’à “API Console Project”

d- Vous devriez voir “ce jeu est lié à la console API Projet appelé helloworld”

e-helloworld devrait être un hyperlien cliquez dessus,

f- cela ouvrira la console Google APis

Dans APconsole, cliquez sur Accès API

h- faites défiler jusqu’à “ID client pour l’application installée”, vous devriez voir que le SHA1 s’assure qu’il est identique à celui généré à partir de l’outil de clé plus tôt à l’étape 10. (S’ils ne correspondent pas, vous devez supprimer le jeu de la console des développeurs et le recréer avec le bon SHA1) “assurez-vous de ne pas modifier la console SHA1 depuis les API Google, cela entraînera des problèmes.

I-Assurez-vous que le nom du paquetage est identique à celui de votre manifeste Android, c’est-à-dire que le nom du paquet est mentionné, assurez-vous qu’il correspond à celui de “ID client pour les applications installées”. la ligne 4 de mon manifeste)

Et c’est tout ce que vous devriez maintenant être en mesure de tester votre connexion en utilisant le service de jeu de Google Play.

Eu le même problème. Ma solution consistait à lier le même package deux fois dans la console de développement, la première utilisant l’empreinte SHA1 de mon propre certificate et la seconde utilisant ma clé de débogage SHA1.

J’avais essayé d’utiliser juste une ou juste l’autre avant cela et cela n’avait pas fonctionné non plus.

A l’ étape 3. Générer un ID client OAuth 2.0, il donne un avertissement spécifique comme suit:

Avertissement: N’ouvrez pas directement la console des API Google et ajoutez manuellement vos ID client sur cette page. Cela pourrait entraîner des erreurs lorsque vous envoyez des demandes aux services de jeu.

Donc, mon expérience était que vous devez suivre le guide religieusement: Configurer les services Google Play Game avec la console développeur Google Play

Je me battais beaucoup contre ce problème. Les modifications apscopes à la console des API Google ne cassent que l’ID client OAuth. Ne le touchez pas. La seule solution pour moi était de créer un nouveau service de jeu et de connecter un fichier apk signé avec une clé normale (pas de débogage), car une fois que vous ajoutez de l’apk avec une clé, si vous essayez de l’append avec une clé différente. La suppression du jeu ne fonctionnera pas, Google se souviendra toujours du nom du paquet. Vous pouvez essayer de changer le nom du paquet apk (bien sûr, ce n’est pas la meilleure idée) et réessayer, mais ce n’est pas toujours le cas.

Donc, une fois que vous aurez ce problème, la meilleure solution consiste à changer le nom du paquet apk et à créer un nouveau service de jeu – cela fonctionnera toujours – et soyez prudent avec le nom du service de jeu – ne le faites pas avec le nom va tout gâcher.

Parmi les quelques problèmes que j’ai rencontrés avec ce service, le plus drôle est que mon apk est maintenant connecté au service de jeu, mais il n’y figure pas et je ne peux pas l’append à cause d’une erreur: cet identifiant est unique et déjà utilisé – Je pense que l’identifiant du client n’est pas un identifiant OAuth – je ne peux pas le supprimer – il n’existe pas d’option de ce type – et c’est peut-être un problème fondamental de ce que nous avons ici.

Assurez-vous que l’ID que vous entrez dans les métadonnées est votre identifiant d’application et non votre identifiant client. Et vous ne pouvez pas le coder en dur, car il doit s’agir d’une chaîne, vous devez le spécifier dans vos ressources, puis le référencer dans votre manifeste.

Lisez ceci pour plus d’informations:

https://developers.google.com/games/services/console/enabling#c_specify_client_id_settings

Remarque: pour Android, vous n’avez pas besoin d’inclure le numéro de client complet dans votre application, car celui-ci sera automatiquement dérivé de l’ID de l’application.

Je rencontre des problèmes similaires et je constate que cette page a été mise à jour le 30 mai 2013:

https://developers.google.com/games/services/android/troubleshooting

Cela peut aider certains d’entre nous.

Guy, avez-vous correctement configuré votre compte pour le test?

Voir https://developers.google.com/games/services/console/testpub#enabling_accounts_for_testing

Si votre jeu est dans un état non publié, vous devez inclure dans la liste blanche les comptes d’utilisateurs auxquels vous souhaitez accorder l’access pour les tests. Sinon, vos testeurs rencontreront des erreurs OAuth et 404 lorsqu’ils tenteront d’accéder aux points de terminaison des services de jeux.

C’était l’étape manquante pour moi. Après cela, je n’ai plus eu ces erreurs:

E / GameAgent: impossible de récupérer l’application 1P 547xxxxxx457 depuis le réseau
E / CheckGameplayAcl: Impossible de charger les métadonnées pour le jeu

Le truc qui a fonctionné pour moi était de publier la configuration des services de jeux, car j’avais déjà un APK publié pour le test alpha.

Pour plus de détails, voir le paragraphe “Autres causes” dans le dépannage https://developers.google.com/games/services/android/troubleshooting

L’approche de Hartok m’aidait aussi, cependant “Vous devrez peut-être supprimer les projets de la console google api.” Ce son est suffisant, mais ce n’est pas le cas, du moins pas pour moi. Google a peu de fonction “Undelete” dans API Console. Vous pouvez simplement restaurer tout, cela signifie qu’ils stockent vos clés SHA-1, mais marqués comme étant supprimés (?). Ce qui a fonctionné pour utiliser à nouveau la clé de débogage, qui était également bloquée, est que j’ai supprimé tous mes projets de test et supprimé manuellement toutes les clés OAuth dans l’option “API Access” de tous les projets supprimés. encore. J’espère que ça aide quelqu’un …

Voici une liste de contrôle:

  1. Vérifiez d’abord si vous n’avez pas fait d’erreurs stupides ou d’inadéquations décrites sur https://developers.google.com/games/services/android/troubleshooting
  2. Un problème courant est un identifiant de ressource ‘app_id’ en conflit, par exemple, si vous utilisez un SDK Facebook, il peut utiliser une clé du même nom, vérifiez bien cela et renommez les autres si vous trouvez des conflits. (Je garderais le ‘app_id’ alloué à ce projet, car la bibliothèque BaseGameUtils se réfère à elle comme ‘ app_id ‘ dans un code source que j’ai vérifié).

  3. Bien que les documents se réfèrent à « Google Developers Console », ne jouez pas intelligemment et essayez d’append les identifiants de clients à partir de là. Bien que, à la fin, les identifiants du client seront également affichés. Il y a une petite note qui peut facilement être mal interprétée:

Vous devez créer le nouvel ID client dans la console développeur Google Play , et non dans la console Google Developers .

  1. Sur la base de cette note, créez vos identifiants clients uniquement à partir de la console développeur Google Play , en d’autres termes, en “Ajouter une application liée”. Donc, vous créeriez généralement 2 applications liées, l’une pour l’utilisation du «debug.keystore» (utilisant le même paquet, mais avec des empreintes différentes) et une autre «application liée» pour le magasin de clés «production», mais utilisant le même paquet, empreintes.

Je pense que cela couvre tout, la plupart des gens pourraient se retrouver dans un piège, car tout semble bien dans la console de développement Google , mais en fait, ils ont probablement manqué les étapes 3 et 4 ci-dessus.

Grâce à Sachin Chavan enfin résolu, le problème était:
1. Google Play a pris le mauvais sha1.
2. Je ai essayé de l’append à partir de la console de développeur de Google – n’a pas fonctionné.
Après avoir consulté l’article et le lien de Sachin Chavan, j’ai vu que vous pouviez relier plusieurs fois la même application à partir de Google Play Console. J’ai donc pris l’alias SHA1 avec:

 keytool -exportcert \ -alias  \ -keystore  \ -list -v 

et le debug SHA1 avec:

 keytool -exportcert \ -alias androiddebugkey \ -keystore  \ -list -v 

J’ai lié l’application deux fois de plus, la première fois que je suis entré dans l’alias SHA1 et la deuxième fois le debug SHA1 , après jour d’erreurs, cela l’a résolu (les étapes en gras).

Toujours pas travailler pour moi. Google a effectué une réinitialisation complète de mes services de jeux sur Google et a procédé progressivement à l’intégration. Toujours dit que je n’ai pas un ID de client Google enregistré. Assez un échec, compte tenu de 3 ans pour faire Google Play Games Services.

Dernière chose, le compte avec @ googlemail.com n’est pas reconnu, vous ne pouvez pas exporter les identifiants des réalisations (vous devez copier au-delà du code HTML, lorsque vous avez 40 réalisations, c’est assez pénible).

05-22 00: 35: 57.914: I / dqi (11166): exception E / S (org.apache.http.NoHttpResponseException) interceptée lors du traitement de la demande: Le serveur cible n’a pas réussi à répondre 05-22 00: 35: 57.914: I / dqi (11166): Réessayer la demande 05-22 00: 35: 58.135: E / Volley (11166): [506] il.a: Code de réponse inattendu 403 pour https://www.googleapis.com/games/v1/ players / me 05-22 00: 35: 58.195: E / Volley (11166): [506] il.a: Code de réponse inattendu 403 pour https://www.googleapis.com/games/v1/players/me 05- 22 00: 35: 58.205: E / SignInIntentService (11166): Accès non configuré 05-22 00: 35: 58.205: E / SignInIntentService (11166): aol 05-22 00: 35: 58.205: E / SignInIntentService (11166): at ajy.a (SourceFile: 108) 05-22 00: 35: 58.205: E / SignInIntentService (11166): à abm.a (SourceFile: 213 05-22 00: 35: 58.205: E / SignInIntentService (11166): à abm.a (SourceFile: 194) 05-22 00: 35: 58.205: E / SignInIntentService (11166): at aav.a (SourceFile: 486) 05-22 00: 35: 58.205: E / SignInIntentService (11166): at aqu.a (SourceFile: 221) 05-22 00: 35: 58.205: E / SignInInten tService (11166): à l’adresse com.google.android.gms.games.service.GamesSignInIntentService.onHandleIntent (SourceFile: 343) 05-22 00: 35: 58.205: E / SignInIntentService (11166): at android.app.IntentService $ ServiceHandler .handleMessage (IntentService.java:65) 05-22 00: 35: 58.205: E / SignInIntentService (11166): at android.os.Handler.dispatchMessage (Handler.java:99) 05-22 00: 35: 58.205: E / SignInIntentService (11166): at android.os.Looper.loop (Looper.java:137) 05-22 00: 35: 58.205: E / SignInIntentService (11166): at android.os.HandlerThread.run (HandlerThread.java: 60) 05-22 00: 35: 58.205: E / LoadSelfFragment (15328): Impossible de se connecter – l’application n’a pas d’identifiant client enregistré

Dans mon cas, j’ai oublié de changer le nom du paquet dans AndroidManifest.xml; c’était tout. Je pense que cela devrait être vérifié en premier.

S’il vous plaît, essayez ceci:

  1. Enregistrez votre application en tant que test (si elle n’est pas encore publiée) (sur le site de développeur Google).
  2. Faites un ID utilisateur de test et enregistrez-les là-bas.
  3. Maintenant, écrivez votre identifiant SHA1.
  4. Notez votre identifiant de développeur généré par Google.
  5. Placez-le à l’endroit approprié dans votre application.

Si vous le faites déjà, suivez cette étape la plus importante.

6 – Maintenant, exportez votre application avec le même magasin de clés et installez-la maintenant sur votre appareil (dans lequel vous êtes connecté en tant qu’identifiant du testeur, enregistré sur Google).
Vous allez sûrement maintenant accéder au serveur en temps réel de Google sans aucune erreur.

ID de version! J’ai dû modifier mon identifiant de version pour une valeur supérieure à ma version la plus récente. Tout à coup, je pouvais me connecter!

Pour moi, j’utilisais un Sample (Button Clicker) et le déguisais en une de mes applications libérées. Je devais probablement encore faire tous les changements de SHA1 car il semblait être désactivé, mais le changement qui était en ma faveur était la mise à jour de l’identifiant de la version à 3 car l’exemple commence à 1 et mon application réelle / publiée a été définie à 2.

Pour moi, la signature de débogage fonctionne, non signée / Pouvons-nous contacter google à ce sujet? J’ai passé toute la journée là-dessus; / je reçois “il n’y a aucune application liée associée à cet identifiant client” mais les deux sont dans Google Api sous le bon projet.

En outre, j’ai accidentellement deux applications liées et publiées pointant vers le même app_ID dans la console du développeur, toutes deux publiées et ne pouvant être supprimées.

Veuillez vérifier la connexion Internet lorsque l’application est en cours d’exécution. Si vous n’êtes pas connecté, ce message d’erreur est consigné.