Je travaille actuellement sur une application Android dans laquelle je souhaite utiliser les services de Google Play Jeux (réalisations, classements, ...). Après de nombreuses itérations, j'ai enfin fait fonctionner le code pour afficher l ' invite de connexion à Google Play Jeux . Le problème est maintenant que après que l'utilisateur se soit connecté , cela prend un certain temps, puis renvoie le code d'erreur 4 avec le message d'erreur vide. Après de nombreuses recherches, rien ne m'a vraiment aidé à résoudre ce problème.
J'ai essayé de le démarrer directement depuis Android Studio, en installant l'application manuellement ou via Google Play, le tout sur plusieurs appareils, rien n'a fonctionné.
Voici un code si nécessaire:
private static GoogleSignInClient mGoogleSignInClient; ... @Override protected void onCreate(Bundle savedInstanceState) { ... mGoogleSignInClient = GoogleSignIn.getClient(this, new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN).requestIdToken(getResources().getString(R.string.app_id)).build()); signInSilently(); // Can't be tested yet. // isSignedIn() and loginDeclined are both false if(!isSignedIn() && !loginDeclined) startSignInIntent(); } ... private void startSignInIntent() { startActivityForResult(mGoogleSignInClient.getSignInIntent(), RC_SIGN_IN); loginDeclined = true; } @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent); // resultCode = 0 if (requestCode == RC_SIGN_IN) { Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(intent); try { GoogleSignInAccount account = task.getResult(ApiException.class); // Now this never happens :( System.out.println("SUCCESS!"); } catch (ApiException apiException) { System.out.println(apiException.getStatusCode() + " + " + apiException.getMessage()); // statusCode is 4, message is "4: " String message = apiException.getMessage(); if (message == null || message.isEmpty()) { message = "Error signing in to Google Play Games"; } new android.app.AlertDialog.Builder(this) .setMessage(message) .setNeutralButton(android.R.string.ok, null) .show(); } } }
4 Réponses :
Veuillez vérifier les détails suivants pour les problèmes de connexion GPG:
Assurez-vous d'avoir suivi les instructions pour créer vos ID client. et configurer les services de jeux.
Votre balise de métadonnées dans le manifeste doit correspondre à l'ID numérique de votre application et ne doit contenir que des chiffres. Vérifiez également le nom de votre package. N'utilisez pas l'exemple de nom de package d'application. Utilise le tien.
Le certificat avec lequel vous signez votre jeu doit correspondre à l'empreinte digitale du certificat associée à votre ID client.
Dernière chose importante, vérifiez que les comptes de test sont activés. J'oublie toujours cette étape.
Assurez-vous que l'empreinte digitale du certificat de signature d'applications correspond aux applications liées des services de jeux. Vous pouvez également vérifier ces détails en accédant à votre console API Google -> Sélectionnez votre application -> Identifiants -> ID client OAuth 2.0.
L'autre chose que j'ai remarquée est que, si l'application est publiée, vous devez installer l'application à partir du Play Store pour que ces informations d'identification fonctionnent. Si l'application n'est pas encore publiée, assurez-vous que vous utilisez l'empreinte digitale de débogage et qu'elle correspond dans vos services de jeux (empreinte digitale de débogage).
Pour autant que vous ayez ces empreintes digitales en place, ça devrait aller. Si vous rencontrez toujours des problèmes, je vous recommande de passer par le laboratoire de code pour obtenir de l'aide étape par étape sur la façon d'étendre un jeu Unity existant pour qu'il s'exécute sur un appareil Android et intègre des développeurs Services de jeux Play . https: // codelabs .developers.google.com / codelabs / playervices_unity / index.html? index = ..% 2F ..% 2Findex # 0
Ou voici les exemples d'applications pour vous aider avec un test rapide - https://github.com/playgameservices/android-basic-samples .
Vous pouvez également nous aider avec le logcat pour mieux comprendre le problème.
Assurez-vous d'utiliser la clé SHA1 .
La commande "keytool -list -keystore [path to debug keystore] " peut afficher une clé SHA-256 .
Pour obtenir votre clé SHA1 , vous pouvez suivre ces étapes:
Récemment, j'ai rencontré le problème lorsque j'essayais d'écrire les données de l'utilisateur sur son lecteur à l'aide de l'API de sauvegarde. Et j'ai compris le problème. Voici mon observation, j'espère que cela aidera dans le scénario général:
Après avoir effectué des recherches sur Internet pendant des heures et vérifié chaque étape de la section de dépannage de la documentation des services de jeux Google Play ( https://developers.google.com/games/services/android/troubleshooting ), J'ai rempli le formulaire "Écran de consentement OAuth" et cela a finalement fonctionné. strong >
Après cela, ma connexion aux services de jeux Google Play a fonctionné instantanément.
J'ai eu la même erreur que j'ai vérifiée pour mon projet de services de jeux google playconsole utilisant le même SHA1 ou non et il y avait le coupable. Assurez-vous que vos applications SHA1 et votre projet playconsole gameservices ont le même SHA1