web-dev-qa-db-fra.com

Android Facebook SDK 3.0 indique que "remote_app_id ne correspond pas à l'identifiant stocké" lors de la connexion

J'essaie de créer une application qui utilise le SDK de Facebook pour Android 3.0. Mais quand j'essaie d'appeler

Session.openActiveSession

Cela me donne simplement un SessionState avec CLOSED_LOGIN_FAILED, et LogCat est:

12-16 00:03:40.510: W/fb4a:fb:OrcaServiceQueue(4105): com.facebook.orca.protocol.base.ApiException: remote_app_id does not match stored id 

J'ai cherché dans StackOverflow avec "remote_app_id" et les résultats sont "l'ID d'ensemble" dans iOS, mais je ne sais pas ce que signifie "remote_app_id" dans Android. J'ai déjà défini le nom du package et le nom de l'activité dans les paramètres de mon application Facebook. Je n'ai aucune idée de la raison de l'erreur.

43
David Fang

J'ai résolu cette question. Le problème est que le "Key Hash" que j'ai généré en utilisant "keytool" était faux. Lorsque "keytool" vous demande un mot de passe, vous devez utiliser "Android" pour cela (sans guillemets). J'utilisais plutôt mon propre mot de passe. Lorsque j'ai changé mon mot de passe, le problème s'est envolé. J'espère que cela t'aides.

34
David Fang

Une autre erreur possible (qui s'est produite avec moi) est la suivante: configurer un "hachage de clé" sur la console d'applications Facebook et signer l'application Android à l'aide d'un autre magasin de clés.

Malheureusement, cela est dû au fait que Tutoriel de mise en route sur Facebook provoque cette erreur. Il indique que les développeurs Android doivent utiliser la clé de débogage Android par défaut dans vos exemples et n'explique pas que le hachage de clés doit être généré avec le même magasin de clés que vous signerez votre application.

Ma recommandation est de configurer deux hachages clés sur votre console facebook:

  1. clé de débogage Android par défaut: 

keytool -exportcert -alias androiddebugkey -keystore ~ ​​/ .Android/debug.keystore | openssl sha1 -binary | openssl base64

  1. votre clé de version de l'application: 

keytool -exportcert -alias yourappreleasekeyalias -keystore ~ ​​/ .votre/chemin/release.keystore | openssl sha1 -binary | openssl base64

Rappelez-vous: vous ne pouvez pas publier une application signée avec la clé de débogage générée par les outils du SDK. Il n'est donc pas possible de publier une application en utilisant uniquement la clé de hachage générée à l'aide de la première ligne de commande précédente (comme le suggère le tutoriel facebook.

Pour plus d'informations sur la signature de votre application, visitez le site Signature de votre application .

77
JPMagalhaes

Une autre option consiste à imprimer le hachage de clé envoyé à Facebook et à utiliser cette valeur.

Apportez les modifications suivantes à la méthode onCreate() dans votre activité principale:

try {
    PackageInfo info = getPackageManager().getPackageInfo(
          "com.facebook.samples.loginhowto", 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 (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}

Remplacez com.facebook.samples.loginhowto par your own package name.

Cela a fonctionné pour moi!

61
TacoEater

J'ai été piégé par un mauvais openssl, qui a généré une mauvaise clé de hachage. J'ai utilisé openssl depuis http://gnuwin32.sourceforge.net/packages/openssl.htm qui a résolu le problème.

5
user1892751

J'ai eu le même problème, découvert que l'OpenSL créait le mauvais sha1 .

4
TacoEater

Vous obtenez la clé de hachage avec la clé de débogage ... Ce qui peut fonctionner si vous n'avez pas signé le package et l'application en cours d'exécution en mode débogage. Ce que vous devez faire c'est:

1) Accédez au fichier manifeste et ajoutez à l'application Android: debuggable = "true".

2) Maintenant, lancez votre application et surveillez le logcat.

3) Vous obtiendrez une nouvelle clé imprimée qui sera la clé correspondante avec x9SLcMXBlgly1f36PJuuc4a3YAc, la clé que vous avez obtenue est maintenant avec un signe = dans la dernière.

4) Enregistrez cette clé sur le site de développement de facbook

Trick alternatif

Vous pouvez faire une autre chose. Enregistrez simplement cette clé sur le site de développeurs facebook x9SLcMXBlgly1f36PJuuc4a3YAc =

Ajoutez simplement = à la clé qui est affichée par l'application facebook.

vous avez terminé!! J'espère que cela fonctionnera.

0
ashutiwari4

Assurez-vous également que vous entrez le hachage au bon endroit sur le portail de développement facebook. Modifiez les paramètres de l’application et sélectionnez Native Android App.

J'avais par erreur mis le hachage dans les "Paramètres de l'application exemple" à la place.

0
zyked