web-dev-qa-db-fra.com

L'application publiée sur le Play Store ne peut pas communiquer avec l'API Google Maps et l'API Facebook

J'ai créé un fichier APK signé avec Android Studio, et j'ai ajouté à la console Google Developer et à la console Facebook mon empreinte SHA1 et les clés d'api relatives dans mon application. Tout fonctionne bien si je télécharge mon apk signé via USB, après l'avoir installé, les cartes API et Facebook fonctionnent bien. Si je télécharge la même apk sur le Play Store, lorsque j'essaie de me connecter avec Facebook, il dit "hachage de clé invalide. Le hachage de clé blablabla ne correspond à aucun stocké .. ". Donc, si je me connecte sans facebook, je ne peux même pas obtenir mes cartes google; cela m'amène à penser que l'apk chargé sur le Play Store change son empreinte digitale ou des trucs comme ça. J'ai vérifié toutes les trucs sur = Android Developers and Stackoverflow, mais je ne peux pas le faire fonctionner, car l'étrange chose est que cette version signée apk fonctionne bien jusqu'à ce que je la charge sur le Play Store.

12
exrezzo

J'ai finalement résolu, le problème était probablement que le fichier google_maps_api.xml fourni par l'API n'était pas chargé dans la version, donc je

j'ai aimé ça:

buildTypes {
    debug {
        manifestPlaceholders = [mapsKey: "AIzaSyB8o9KzQ5YN8U8AFS************"]
    }
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        manifestPlaceholders = [mapsKey: "AIzaSyApLacqgkdIR7uEpcf*****************"]
    }
}

puis dans mon AndroidManifest

<meta-data
        Android:name="com.google.Android.geo.API_KEY"
        Android:value="${mapsKey}" />

Référence: https://stackoverflow.com/a/33917692/323556

puis j'ai enregistré 2 clés différentes chacune avec l'empreinte digitale sha1 droite, un débogage et l'autre donné par la console Google Play (pas le certificat de téléchargement, mais l'autre généré par Google).

Très très merci à Zuhad et Andy Developer pour l'inspiration.

3
exrezzo

Voici la réponse pour laquelle vous ne pouvez pas voir la carte Google.

J'ai récemment téléchargé l'APK sur Google Play Store et j'ai rencontré le même problème après avoir vérifié la console Play, j'ai trouvé la solution à ce problème.

Ce n'est pas un problème avec votre clé mais le problème est avec votre SHA-1. Vous avez signé votre APK avec votre SHA-1, c'est bien, puis téléchargez l'APK aussi.

Mais selon la nouvelle mise à jour de Play Console lorsque vous avez signé votre APK avec SHA-1 et téléchargez l'APK, il n'a été signé que par vous, mais selon la nouvelle mise à jour, il est également signé par Google Play pour plus de sécurité. Jetez un œil ici à une partie de la section Google Play:

Avec la signature d'application Google Play: vous signez votre application avec votre clé de téléchargement. Ensuite, Google vérifie et supprime la signature de la clé de téléchargement. Enfin, Google signe à nouveau l'application avec la clé de signature d'application que vous avez fournie et livre votre application à l'utilisateur.

Vous pouvez vous référer Documentation ici.

Maintenant, la réponse à votre question est Après avoir téléchargé avec succès l'APK, vous pouvez voir que dans la section avec deux SHA-1, le 1er SHA-1 est créé par Google son propre et 2ème SHA-1 est le vôtre .

Il vous suffit donc de copier le Google SHA-1 et de le coller sur votre console où vous générez la clé API Google Map.

25
Andy Developer

Avec l'inspiration de @Andy Developer, j'ai pu afficher la carte après le téléchargement de mon application sur Google Play. Ce sont les étapes:

  1. Téléchargez votre application sur Google Play (fichier APK signé)
  2. Une fois l'application soumise et approuvée, sélectionnez votre application dans Google Play Console
  3. Aller à Outils de développement -> Gestion des versions -> Signature d'application

App Signing in Google Play Console

  1. Copiez le premier certificat SHA-1 émis par Google Play après le téléchargement de l'application.
  2. Accédez à Google Console et sélectionnez votre projet.
  3. Sélectionnez votre clé API, limitez votre clé et collez le SHA-1 après le nom du package.

Paste SHA-1 into Google Console

  1. Appuyez sur Enregistrer , attendez quelques minutes. et votre application devrait afficher Google Maps.
23
ymerdrengene

Oui, il est évident que la carte ne se chargera pas dans l'APK signé.

Solution:

Lorsque vous générez une clé API dans la console Google API, vous devez restreindre la clé avec la clé SHA

Mais après avoir généré APk signé, vous devez prendre le mode de libération SHA et ajouter la console API pour l'API enter image description here

J'ai joint l'image, jetez un oeil

j'espère que ça aide.

0
Zuhad

Pour que Facebook génère une clé de hachage, utilisez le code ci-dessous:

try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "YOUR PACKAGE NAME",
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (PackageManager.NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }

Une fois que vous avez reçu le code de hachage, collez-le dans la console des développeurs Facebook et continuez

j'espère que ça aide:)

0
Zuhad

Les types de build de débogage et de publication de votre application sont signés avec deux clés différentes.

Vous devez enregistrer les deux clés dans Google Maps et Facebook pour leur permettre d'accéder à leurs services

0
Robert Estivill