web-dev-qa-db-fra.com

Google Play Game Services - impossible de se connecter

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

Choses que j'ai faites jusqu'à présent:

  1. ajouté et lié à mon application dans la console de développement (services de jeu)
  2. inclus le OAuth id client) dans mon application/manifeste
  3. ajouté BaseGameActivity et GameHelper à mon projet ( from GitHub )
  4. a ajouté la bibliothèque google-play-services à mon projet
  5. étendu BaseGameActivity, ajouté un com.google.Android.gms.common.SignInButton

J'ai également mis en place des méta-données de jeu et, bien sûr, certaines réalisations. La console de développement indique qu'elle est prête à être publiée. Pour tester le flux de connexion et les réalisations, j'ai ajouté deux comptes Google+ en tant qu'utilisateurs de test.

Mais lorsque 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 de production - en utilisant ProGuard et le bon certificat.

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 liée Android app (empreinte digitale du certificat vérifiée))
  • désactiver l'anti-piratage
  • sauter programme
  • créer un nouveau jeu (test) et utiliser son identifiant client

Le problème n'est pas lié aux comptes pour tester . L'utilisation d'un compte qui n'est pas activé pour le test entraînera un autre message d'erreur:

E/GameAgent: Unable to retrieve 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é le console Google APIs auparavant. Il est important de savoir que le OAuth ID client 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 retirez-le manuellement.

L'empreinte digitale SHA1 sélectionnée automatiquement est (toujours) fausse! Vous devez chercher le vôtre:

keytool -exportcert -alias <your-alias> -keystore <path-to-keystore> -list -v

Le nouvel identifiant client de mon application liée (correctement) ressemblait à 89xxxxxxxx73-2u6mXXXXXXXXXXXXXXXXXXX8903.apps.goo..., pas seulement 12 chiffres comme avant. J'ai finalement compris qu'il fallait exclure le tiret et les caractères alphanumériques et ne devoir utiliser que les 12 chiffres.

60
ottel142

J'ai résolu 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 de certificat sélectionnée automatiquement par Google Play n'était pas la bonne.

Pour résoudre ce problème, j'ai supprimé mon ID client d'application sur console des API Google , j'ai dissocié mon application, puis je l'ai reliée avec l'empreinte de certificat appropriée. Cette empreinte digitale est affichée lors de l'exportation de votre application dans Eclipse (si votre plug-in ADT est à jour).

J'espère que ça aide.

30
Hartok

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

notez que tout ce que j'essayais de faire est de vous connecter à l’aide du bouton de connexion de Google, sans aucune action quant à ce qui devrait se passer après sa signature. Notez également que j’ai utilisé BaseGameUtils de l’exemple de lecture de Google comme bibliothèque. IDE de choix pour faire tout cela était Eclipse.

Vous trouverez ci-dessous les étapes une à une d’utilisation d’Eclipse:

1-importez 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 est survenue, procédez comme suit:

a- un clic droit sur le projet BaseGameUtil dans l'explorateur de projets

b-Cliquez sur Java

c-cliquez sur Ajouter des fichiers JAR externes à partir de là, accédez à l'emplacement de votre 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 JAR et dossiers de classe.

e-Go. Dans l’onglet Ordre et exportation, à droite des bibliothèques, assurez-vous que les options "Bibliothèques privées Android" et "Dépendances Android" sont cochées et que le fichier google-play-services.jar est également sélectionné.

2- Maintenant, assurez-vous de référencer correctement votre BaseGameUtility importé dans l'application que vous souhaitez utiliser: "Vous pouvez créer une simple application hello world pour le tester". Nous allons donc maintenant référencer BaseGameUtility dans l'application hello world:

(important, assurez-vous que hello world et BaseGameUtil sont tous deux dans le même lecteur. Deux lecteurs ne fonctionneront pas.)

un clic droit sur l'application hello world dans le volet droit de l'explorateur de projets

b-cliquez sur Java

c-cliquez sur Bibliothèques

d- ajoutez le Android support-v4 si nécessaire à partir d'une source externe ou interne (non requis)

e- ajoutez le jeu de base utils .jard en cliquant sur ajouter un dossier de classe -> puis sélectionnez le BaseGameUtilProject --- Ensuite, sélectionnez le dossier/bin - Cela devrait l'importer dans votre application

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

g-in "order and export" veille à ce que vous ayez sélectionné ---> "Bibliothèques privées Android, dépendances d'Android, BasegameUtils.jar, GooglePlayGameServices.jar", ainsi que les codes SRC et GEN normaux à sélectionner par défaut.

3- maintenant dans votre Java helloworld.Java, assurez-vous que votre écran principal contient toutes les importations requises, puis étendez BaseGameUtil et assurez-vous que le projet implémente ViewOnClickListener.

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

 <meta-data Android:name="com.google.Android.gms.games.APP_ID"
        Android:value="@string/app_id" />

et

<uses-permission Android:name="Android.permission.INTERNET"></uses-permission>

5- Assurez-vous que vous avez un fichier ids.xml dans votre ressource pour inclure votre ID d'application après l'avoir créé.

<string name="app_id"></string>

Vous pouvez le laisser vide pour le moment, car vous devrez y placer ultérieurement l'ID de l'application.

6-Copiez la clé de débogage que vous avez sur votre Eclipse IDE avant d’ajouter cette application dans la console du développeur. Pour le faire dans Eclipse, procédez comme suit:

a-cliquez sur Fenêtre b- sélectionnez Android c-cliquez sur Créer d- copiez 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- placer l'ID de l'application dans le fichier ids.xml mis en surbrillance à l'étape 5

9- vérifiez vos valeurs et assurez-vous que les noms de paquet sont tous corrects entre la console de développement et le fichier manifeste.

<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
**package="com.helloword.check"**
Android:versionCode="1"
Android:versionName="1.0" >

10- Une fois terminé, assurez-vous que l'application de la console du développeur correspond à la SHA1 attribuée 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 ID avec un outil clé ultérieurement

b-localisez votre outil de clé -> généralement situé sous le dossier Java de votre ordinateur, dans mon cas, il se trouvait sous C:\Program Files\Java\jdk1.7.0_09\jre\bin

c- Extrait votre apk dans l'emplacement de temp

d- lancer la commande suivante

keytool -printcert -file "TempLocation\Meta-INF\CERT.RSA"

vous obtiendrez un MD5 avec SHA1 et SHA256

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

11- Voici comment vérifier votre SHA1 à partir de la console des développeurs,

a- aller aux services de jeux

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

c- Faites défiler jusqu'à "Projet de console API"

d- Vous devriez voir "ce jeu est lié au projet de console d'API appelé helloworld"

e-helloworld devrait être un hyperlien, cliquez dessus,

f- Cela ouvrira la console Google APis

g- dans APconsole cliquez sur API Access

h- Faites défiler jusqu'à "ID clients pour l'application installée", vous devriez voir le SHA1 s'assurer 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 code SHA1 approprié). "Assurez-vous de ne pas modifier le système SHA1 à partir de la console API de Google.

Assurez-vous que le nom du package est identique à celui indiqué dans votre Android manifeste, je veux dire par là que le nom du package est mentionné partout, assurez-vous qu'il correspond à celui de "ID client pour les applications installées" (dans ma si cela ne correspond pas à celui de la ligne 4 de mon manifeste)

Et voilà, vous devriez maintenant pouvoir tester votre connexion à l'aide du service de jeu Google Play.

14
Dulli

Avait le même problème. Ma solution consistait à relier deux fois le même package dans la console de développement, le premier utilisant l'empreinte SHA1 de mon propre certificat et le second à l'aide de ma clé de débogage SHA1.

J'avais essayé d'utiliser juste l'un ou l'autre avant cela et cela n'avait pas fonctionné pour l'un ou l'autre.

14
user2267794

Dans Étape 3. Générez un OAuth 2.0 ID client ], un avertissement spécifique est envoyé comme suit:

Avertissement: n'ouvrez pas directement la console API Google et ajoutez manuellement vos identifiants de client sur cette page. Cela pourrait provoquer des erreurs lorsque vous envoyez des demandes aux services de jeu.

Mon expérience m'a donc appris que vous devez suivre scrupuleusement le guide: Configuration des services de jeux Google Play avec la console des développeurs Google Play

5
Sachin Chavan

Je combattais beaucoup ce problème. Les modifications apportées à la console Google API ne font que rompre OAuth ID client - ne le touchez pas. La seule solution pour moi était de créer un nouveau service de jeu et de vous connecter en mode apk signé avec une clé normale (pas de débogage) car une fois que vous avez ajouté apk avec n'importe quelle clé, si vous essayez à nouveau de l'ajouter avec une clé différente, cela ne fonctionnera pas. La suppression du jeu ne fonctionnera pas, Google gardera toujours en mémoire le 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 essayez encore mais ce n’est pas toujours efficace.

Donc, une fois que vous aurez ce problème, la meilleure solution est de changer le nom du paquet apk et de créer un nouveau service de jeu - cela ne manquera pas de fonctionner - et soyez prudent avec le nom du service de jeu - ne le créez pas avec le nom que vous avez utilisé précédemment - cela 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 ne figure pas dans cette liste et je ne peux pas l'ajouter à cause d'une erreur: cet identifiant client est unique et déjà utilisé. - Je pense que l'ID client n'est pas un OAuth ID - 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.

4
user2445947

Assurez-vous que l'ID que vous entrez dans les métadonnées est votre identifiant d'application, pas votre identifiant de 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 l'ID de client complet dans votre application, car il sera dérivé automatiquement de l'ID d'application.

3
Alex Cabrera

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.

2
IanB

L'astuce qui a fonctionné pour moi a été de publier la configuration des services de jeu, car j'avais déjà un APK publié pour les tests d'alpha.

Pour plus de détails, voir le paragraphe "Autres causes" de la résolution des problèmes https://developers.google.com/games/services/Android/troubleshooting

1
Andy

Grâce à Sachin Chavan a finalement résolu le problème, le problème était le suivant:
1. Google Play s'est trompé de sha1.
2. J'ai essayé de l'ajouter à partir de la console développeur Google - cela n'a pas fonctionné.
Après avoir examiné le message et le lien de Sachin Chavan, j’ai vu que vous pouviez relier plusieurs fois la même application à partir de la console Google Play. J'ai pris le pseudonyme SHA1 avec:

keytool -exportcert \
-alias <your-key-name> \
-keystore <path-to-production-keystore> \
-list -v

et le débogage SHA1 avec:

keytool -exportcert \
-alias androiddebugkey \
-keystore <path-to-debug-keystore> \
-list -v

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

1
LiranNis

Voici une liste de contrôle:

  1. Commencez par vérifier si vous n'avez commis aucune erreur ni discordance stupide décrite 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 kit de développement logiciel (SDK), il peut s'agir d'une clé portant le même nom. Vérifiez-la et renommez les autres en cas de conflit. (Je garderais le 'app_id' attribué à ce projet, car la bibliothèque BaseGameUtils le désigne par ' 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'ajouter l'ID client à partir de là. Bien que, à la fin, les identifiants de client seront également là. 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 du développeur Google Play et non dans la console des développeurs Google .

  1. Par conséquent, sur la base de cette note, créez vos identifiants de client uniquement à partir de la console du développeur pour Google Play , en d'autres termes, en ajoutant "Ajout d'une application liée". Ainsi, vous devez généralement créer deux applications liées, une pour utiliser le fichier 'debug.keystore' (en utilisant le même package, mais avec des empreintes digitales différentes), et une autre 'application liée' pour le magasin de clés 'de production', tout en utilisant le même package, mais avec des empreintes.

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

1
Alécio Carvalho

L'approche de Hartok m'aidait aussi, cependant "Vous devrez peut-être supprimer les projets de la console Google Api." ce son suffit, mais ce n'est pas, du moins pas pour moi. Google a peu de fonction "annuler la suppression" dans la console API. Vous pouvez simplement tout restaurer, cela signifie qu'ils stockent vos clés SHA-1, mais marquées comme supprimées (?). Ce qui a fonctionné pour moi pour utiliser à nouveau la clé de débogage, qui a également été bloquée, est que j'ai annulé tous mes projets de test et supprimé manuellement tous les OAuth clés de l'option "Accès à l'API" de tous ces projets supprimés , après cela, je pourrais utiliser à nouveau ma clé de débogage. J'espère que cela aidera quelqu'un ...

1
CaptainCrunch

Guy, avez-vous correctement configuré votre compte pour les tests?

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

Si votre jeu est dans un état non publié, vous devez ajouter à la liste blanche les comptes d'utilisateurs auxquels vous souhaitez accorder l'accès pour les tests. Sinon, vos testeurs rencontreront des erreurs OAuth et 404 lors de la tentative d'accès aux points de terminaison des services de jeu.

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

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

1
avianey

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.

0
user2259824

Pour moi, la signature de débogage fonctionne, pas signé;/Pouvons-nous contacter Google à ce sujet? J'ai passé toute ma journée dessus;/j’ai le message "il n’ya pas d’application liée associée à cet ID client" mais les deux sont dans Google Api dans le bon projet.

De plus, j'ai accidentellement deux applications liées et publiées pointant vers la même app_ID dans la console du développeur, toutes deux publiées et ne pouvant pas être supprimées.

0
Paweł

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éveloppement de Google).
  2. Faites un test utilisateur id et enregistrez-les là-bas.
  3. Maintenant, écrivez votre identifiant SHA1 ici.
  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 - Exportez maintenant votre application avec le même magasin de clés et installez-la à présent sur votre appareil (dans lequel vous vous êtes connecté en tant qu'ID de testeur, enregistré sur Google).
Vous accéderez sûrement au serveur en temps réel de Google sans aucune erreur.

0
AnkurJat

Ne travaille toujours pas pour moi. Google a procédé à une réinitialisation complète de mes services de jeu Google Play, et a procédé pas à pas à l'intégration. Toujours dit que je n'ai pas d'identifiant client google enregistré. Assez un échec, compte tenu de 3 ans pour rendre Google Play Games Services.

Dernière chose, les comptes avec @ googlemail.com ne sont pas reconnus, vous ne pouvez pas exporter les identifiants des réalisations (vous devez copier le code HTML, si vous avez 40 réalisations, c'est assez pénible).

05-22 00: 35: 57.914: I/dqi (11166): Exception d'E/S (org.Apache.http.NoHttpResponseException) interceptée lors du traitement de la demande: le serveur cible n'a pas répondu. 05-22 00: 35: 57.914: I/dqi (11166): Nouvelle tentative de 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/ joueurs/moi 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): à 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): à 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): à Android.app.IntentService USD. .handleMessage (IntentService.Java:65) 05-22 00: 35: 58.205: E/SignInIntentService (11166): sur Android.os.Handler.dispatchMessage (Handler.Java:99) 05-22 00: 35: 58.205: E/SignInIntentService (11166): sur Android.os.Looper.loop (Looper.Java:137) 05-22 00: 35: 58.205: E/SignInIntentService (11166): sur Android.os.HandlerThread.run (HandlerThread.Java: 60) 05-22 00: 35: 58.205: E/LoadSelfFragment (15328): Impossible de se connecter - l'application ne possède pas d'identifiant client enregistré.
0
execomrt

S'il vous plaît 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 enregistré.

0

ID de version! Je devais changer mon ID de version avec une valeur supérieure à celle de ma version la plus récente. Soudain, je pouvais me connecter!

Pour moi, j'utilisais un exemple (Button Clicker) et le dissimulais comme l'une de mes applications publiées. Je devais probablement toujours modifier tout le contenu de SHA1, car cela semblait être inactif, mais le changement qui a basculé en ma faveur a été de mettre à jour l'ID de version à 3, car l'échantillon commence à 1 et mon application réelle/publiée a été définie à 2.

0
CodeMonkey