61 votes

Google Play Game Services: impossible de se connecter

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

Les choses que j'ai fait jusqu'à présent:

  1. ajoutée et lié mon application dans le Dev de la Console (services de jeu)
  2. inclus le client OAuth id dans mon app/manifeste
  3. ajouté BaseGameActivity et GameHelper de mon projet (à partir de GitHub)
  4. ajouté le google play services de la bibliothèque de mon projet
  5. étendu BaseGameActivity, a ajouté une com.google.android.gms.common.SignInButton

J'ai également mis en place jeu de méta-données et, bien sûr, quelques réalisations. Le dev console indique qu'il est prêt à sortir. Pour tester la connexion flux et les réalisations, j'ai ajouté deux Google+ comptes utilisateurs de test.

Mais quand je teste la SignInButton, un message d'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 - à l'aide de ProGuard et le certificat de droit.

Ai-je raté quelque chose?

Mise à jour - quelques tentatives plus

Voici un bref aperçu sur ce que j'ai essayé dans le temps. Rien n'a aidé.

  • supprimer et recréer le lié application Android d'entrée (double vérification certificat d'empreintes digitales)
  • désactiver l'anti-piratage
  • passez proguard
  • créer un nouveau (test) jeu et l'utilisation de son identifiant client

Le problème n'est pas lié aux comptes pour les tests de la section. À l'aide d'un compte qui n'est pas activé pour les essais conduisent à un autre message d'erreur:

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

Solution par Hartok!

Hartok la solution m'a beaucoup aidé à résoudre ce problème. Je n'ai jamais visité l' Api Google Console avant. Il est important de savoir, que le Client OAuth ID n'est pas supprimé lorsque vous supprimez un lien app à partir de votre jeu ou même supprimer un jeu (dans le Dev de la Console). Vous devez vous rendre à l'Api de la Console et de le supprimer manuellement.

L'auto-sélectionné empreinte SHA1 est (toujours) mal! Vous avez à la recherche de votre propre:

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

Le nouveau client id de mon (correctement) lié application ressemblait 89xxxxxxxx73-2u6mXXXXXXXXXXXXXXXXXXX8903.apps.goo..., et pas seulement de 12 chiffres comme avant. J'ai finalement compris que vous devez exclure le tableau de bord et alphanumériques des trucs à 12 chiffres.

Merci de m'aider!

30voto

Hartok Points 1339

J'ai résolu ce problème.

Dans mon cas, lorsque j'ai lié mon application (pas encore publié) pour mon Google Play Services de Jeu à projet, le Certificat d'Empreintes digitales auto-sélectionné par Google Play n'était pas la bonne.

Pour corriger cela, j'ai supprimé mon application client ID sur Google Api Console, non reliées l'une de mes applications, puis réédités avec le bon Certificat d'Empreintes digitales. Cette Empreinte est affiché lors de l'exportation de votre application dans Eclipse (si votre plugin ADT sont à jour).

Espérons que cela aide.

14voto

user2267794 Points 41

Avait le même problème. Ma solution consistait à lier 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.

14voto

Dulli Points 271

Après une longue et douloureuse 2 semaines à essayer de résoudre ce problème, j'ai créé des étapes pour moi de résoudre ce problème, et a décidé de le partager avec tous ceux qui souffre du même problème, cela vient sans publier le jeu . il est utilisé pour les tests. lorsque le délai de publication est, je vais partager les étapes à suivre pour publier l'application et assurez-vous qu'il fonctionne avec Google play game service.

notez que tout ce que j'essaie de faire est de vous inscrire en utilisant le Google bouton de connexion avec aucune action de ce qui devrait arriver après le signer, note aussi que j'ai utilisé BaseGameUtils depuis le Google play exemple, dans une bibliothèque, et mon IDE de choix pour obtenir tous de ce fait a été Eclipse.

Ci-dessous sont les étapes une par une à l'aide d'eclipse:

1-importer BaseGameUtils comme une bibliothèque dans votre eclipse espace de travail, assurez-vous qu'aucune erreur se produit après l'importation. si une erreur s'est produite effectuer les opérations suivantes :

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

b-Cliquez sur l'icône Java build path

c-Cliquez sur add external jars à partir de là, naviguez jusqu'à votre emplacement du SDK et de trouver Google-Play-services.jar

d-sélectionnez-le et cliquez sur ok ---> vous devriez voir le pot ajouté dans les Pots et les dossiers de classe de la fenêtre.

e-Allez à la Commande et à l'exportation onglet, sur le côté droit de bibliothèques et assurez-vous que "Android bibliothèques privées" et "Android Dépendances" sont vérifiées également veiller à ce que les google-play-services.jar est sélectionné.

2 - Maintenant, assurez-vous que vous faites référence à votre importés BaseGameUtility correctement dans l'application que vous souhaitez utiliser , Vous pouvez Créer une simple application hello world pour tester cela " , alors maintenant nous allons de référence de la BaseGameUtility dans l'application hello world comme suit:

(il est important de s'assurer à la Fois bonjour tout le monde et BaseGameUtil sont tous les deux dans le même disque deux lecteurs ne fonctionnera pas)

un-clic droit sur l'application hello world, il int côté droit dans l'explorateur de projet

b-cliquez sur l'icône Java build path

c-Cliquez sur les Bibliothèques

d - ajouter le soutien android v4 si nécessaire, en externe ou interne de la source (Pas Obligatoire)

e - ajouter le jeu de base utils .jard en cliquant sur ajouter une classe dossier --> 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-dans "l'ordre et à l'exportation" s'assurer que vous avez sélectionné --->"Android Bibliothèques Privées,Android dépendances ,BasegameUtils.jar,GooglePlayGameServices.jar" avec la normale de la SRC et de la génération qui doit être sélectionné par défaut.

3 - maintenant, dans votre fichier java helloworld.java s'assurer que votre écran principal dispose de toutes les importations, puis d'étendre la BaseGameUtil et assurez-vous que le projet met en œuvre la ViewOnClickListener.

4 - Modifier votre android manifeste pour inclure les suivantes :

 <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 d'avoir un ids.xml fichier dans votre ressource à inclure votre ID de l'application après l'avoir créé.

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

Vous pouvez laisser le champ vide pour l'instant que plus tard, vous aurez à la place de l'ID de l'application en elle

6-copie de la clé de débogage que vous avez sur votre eclipse IDE avant d'ajouter à cette application dans la console développeur. le faire dans eclipse se passe comme suit:

un clic sur la Fenêtre b - sélectionnez android c-Cliquez sur générer d - copie de l'empreinte SHA1 et de le conserver pour l'utiliser lors de la création de votre application dans les Développeurs de la console.

7 - Créer votre jeu dans les développeurs de la console et utiliser le SHA1 (extrait à partir de l'étape 6.

8 - la place de l'ID d'application dans le ids.xml mis en évidence à l'étape 5

9 - vérifiez vos valeurs et de s'assurer que les noms sont tous corrects entre les développeurs de la console et le fichier de manifeste .

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

10 - Lorsque le fait de s'assurer que le appolication dans la console développeur correspond le SHA1 est affecté dans developer console à l'aide de l'utilitaire keytool. C'est l'étape qui m'a pris 2 semaines juste pour comprendre

un - recherchez votre application APK à partir du dossier bin de votre hellow world project, et de le copier à un autre emplacement pour vérifier son identité avec outil clé plus tard

b-recherchez votre utilitaire keytool --> habituellement situé sous le dossier JAVA de votre ordinateur, dans mon cas, c'était en vertu de C:\Program Files\Java\jdk1.7.0_09\jre\bin

c - l'Extrait de votre apk dans le répertoire temporaire

d - exécuter la commande suivante

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

vous recevrez un MD5 avec SHA1 et SHA256

S'assurer que le SHA1 correspond à celui dans les développeurs de la console.

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

un - go de Services de Jeu

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

c - faites Défiler jusqu'à "API Console de Projet"

d - Vous devez voir "ce jeu est lié à l'API console Projet appelé "helloworld"

e - helloworld devrait être un lien hypertexte, cliquez sur elle,

f - cela va ouvrir l'Api Google Console

g - en APconsole cliquer sur l'Accès à l'API

h - faites défiler jusqu'à "Id Client pour l'application installée" , vous devriez voir le SHA1 de s'assurer qu'il est le même que celui généré à partir de l'utilitaire keytool précédemment à l'étape 10 . ( si elles ne correspondent pas, vous devez supprimer le jeu des développeurs de la console et de le recréer avec le bon SHA1 ) " veillez à ne pas modifier le SHA1 de Google Api console cela va causer des problèmes.

J'-s'Assurer que le nom du package est le même nom de paquet dans votre manifeste android, je veux dire par là partout package nom est mentionné de s'assurer qu'elle correspond à celle de "Client ID pour les applications installées" ( dans mon cas, elle na pas correspondre à celui de la ligne 4 de mon manifeste)

Et qu'est-ce que vous devriez maintenant être en mesure de tester votre connexion à l'aide de google play game service

5voto

Sachin Chavan Points 2252

Dans L'Étape 3. Générer un OAuth 2.0 ID de client qu'il donne précisément un avertissement comme suit:

Avertissement: Ne pas ouvrir l'Api Google Console directement et manuellement ajouter votre Id Client sur cette page. Cela pourrait entraîner des erreurs lors de vous envoyez des demandes pour les services de jeu.

Donc, mon expérience a été que vous avez besoin de suivre le guide religieux: la mise en Place Google Play Services de Jeu avec le Google Play Developer Console

4voto

user2445947 Points 21

J'ai été la lutte contre ce problème. Les changements dans les Api Google Console que casser Client OAuth ID - ne pas le toucher. La seule solution pour moi était de créer un nouveau service de jeu et connecter signé apk avec la normale(pas de débogage) - parce qu'une fois que vous ajoutez apk avec n'importe quelle touche, si vous essayez à nouveau d'ajouter avec différentes clés, cela ne fonctionnera pas. Supprimer le jeu ne fonctionne pas, google va encore se rappeler le nom du package. Vous pouvez essayer de modifier apk nom de paquet (bien sûr, il n'est pas la meilleure idée) et essayez à nouveau, mais il n'est pas toujours le travail.

Donc, une fois que vous avez ce problème, la meilleure solution est de changer apk nom de package et de créer un nouveau service de jeu - ce à coup sûr toujours au travail et s'il vous plaît soyez prudent avec le service de jeu nom - ne pas le faire avec le nom que vous avez utilisé auparavant, il gâchera tout.

De quelques problèmes que j'ai eu avec ce service le plus drôle, c'est que j'ai maintenant mon apk connecté avec le service de jeu mais il n'est pas inscrite et je ne peux pas l'ajouter en raison d'une erreur:Ce numéro de client est unique au monde et est déjà en cours d'utilisation - je pense que l'ID client n'est pas un OAuth ID - je ne peux pas les supprimer, il n'y a pas une telle option - et c'est peut-être un problème de racine de ce que nous avons ici.

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