3
votes

Connexion à Google Play Jeux Android Obtention du code d'erreur 4

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();
        }
    }
}


1 commentaires

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


4 Réponses :


0
votes

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.


0 commentaires

3
votes

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:

  1. Ouvrez votre projet
  2. Cliquez sur " Gradle " (sur le côté droit)
  3. Choisissez votre module
  4. Tâches -> android -> (double-cliquez) signingReport

image: obtenez votre clé SHA1


0 commentaires

0
votes

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:

  1. Vous pouvez tester l'API Play Games dans la version de débogage en ajoutant des testeurs dans votre console de jeu.
  2. Si vous souhaitez tester sur un apk signé, vous devez générer la clé SHA1 à l'aide de votre fichier de keystore "app.keystore" et ajouter l'application Android avec cette clé SHA1 dans les services de jeux de jeu spécifiques à cette application. Maintenant, vous pourriez obtenir le résultat attendu. (C'était le problème dans mon cas)
  3. Si vous souhaitez stocker les données sur le lecteur de l'utilisateur, vous devez activer l'API "parties sauvegardées" dans les services de jeux.

0 commentaires

0
votes

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é.

  1. Connectez-vous à la console Google Play
  2. Accéder aux services de jeux
  3. Accédez à votre jeu
  4. Sur la page Détails du jeu, faites défiler jusqu'au projet de console API associé
  5. Cliquez sur le lien vers le projet de console API associé
  6. Cliquez sur "OAuth Conset Screen" dans la barre latérale gauche
  7. Choisissez externe
  8. Remplissez le formulaire et téléversez une icône
  9. Envoyer pour vérification

Après cela, ma connexion aux services de jeux Google Play a fonctionné instantanément.


0 commentaires