43 votes

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

Je suis en train de construire une application qui utilise Facebook SDK pour Android 3.0. Mais quand j'essaie d'appeler

Session.openActiveSession

- Il tout simplement me donne 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é sur StackOverflow avec "remote_app_id" et les résultats sont les "ID" dans iOS, mais je ne sais pas quel est le "remote_app_id" signifie dans Android. J'ai déjà le nom du package et le nom de l'activité dans mon Facebook paramètres de l'application. Je n'ai aucune idée de la raison de l'erreur.

77voto

JPMagalhaes Points 2286

Une autre erreur possible (ce qui s'est passé avec moi) est de: mettre en place une "Clé de Hachage" à Facebook App Console et à signer l'application android en utilisant un autre fichier de clés.

Malheureusement, cela est dû au fait que Facebook Tutoriel d'initiation provoque cette erreur. Il est dit que les développeurs android devrait utiliser la valeur par défaut android debug clés dans vos exemples et n'explique pas que la Clé de Hachage doit être généré avec le même fichier de clés vous allez signer votre application.

Ma recommandation est de mettre en place deux Clés de Hachages à votre facebook de la console:

  1. par défaut android debug clé:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binaire | openssl base64

  1. votre version d'application principaux:

keytool -exportcert -alias yourappreleasekeyalias -keystore ~/.votre/chemin/de la libération.keystore | openssl sha1 -binaire | openssl base64

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

Pour plus d'informations à propos de la signature de votre demande, visite de la Signature de Votre Demande.

61voto

MonkeyFish Points 612

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!

34voto

David Fang Points 965

J'ai résolu cette question. Le problème est que le "Key Hash" que j'ai généré avec "keytool" était faux. Lorsque "keytool" vous demande un mot de passe, vous devez utiliser "Android" pour celui-ci (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.

5voto

user1892751 Points 41

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

4voto

MonkeyFish Points 612

J'ai eu le même problème, découvert que l'OpenSl créait le mauvais sha1. téléchargé un nouveau et cela a fonctionné comme un charme.

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