J'ai intégré mon application à Facebook, et j'utilise pour cela le Graph API de Facebook. Je récupère les informations de profil et d'amis. Cela fonctionne bien sur mon appareil qui a Android 2. (Pain d'épice), mais récemment, mon client a été confronté à un problème alors qu'il essayait de se connecter à Facebook via mon application. Il a Android 4. (sandwich à la crème glacée) sur son appareil. Lorsqu'il clique sur un bouton de l'application qui lui permet d'accéder à l'écran de connexion de Facebook, il reçoit un message après la connexion:
Mon application est mal configurée pour la connexion à Facebook. Appuyez sur OK pour revenir à l'application sans vous connecter à Facebook.
Je ne comprends pas quel est le problème, que ce soit lié à Android ou quoi.
Comment puis-je résoudre ce problème?
Je travaille chez Facebook, et il s’agit là d’un problème important à résoudre. L'autre réponse à cette question suggère que la désactivation de l'authentification unique est très mauvaise et ouvrira votre application aux applications malveillantes susceptibles de voler les informations d'identification Facebook de votre utilisateur.
Le hack lance une boîte de dialogue WebView sur Facebook sans SSO, et l'utilisateur doit taper ses informations de connexion dans cette boîte de dialogue. Des applications malveillantes peuvent alors facilement voler ces informations. Il est toujours conseillé de mettre correctement en œuvre l'authentification unique de Facebook pour garantir la sécurité de votre application et protéger les données sensibles de votre utilisateur.
Avant d'ajouter ce message d'erreur, la boîte de dialogue se fermerait automatiquement sans avertissement et échouerait en mode silencieux. Nous avons ajouté ce message d'erreur pour indiquer visuellement qu'il existe un problème de configuration de votre application dans le tableau de bord de votre application Facebook. Pour Android, si vous vérifiez votre LogCat , vous verrez qu'après avoir appuyé sur "OK", il devrait y avoir un message d'erreur indiquant une description plus technique de la cause de l'échec de l'authentification.
Par exemple, si vous utilisez notre exemple Hackbook sans fournir votre propre APP_ID dans le source et que vous n’ajoutez pas votre clé de hachage au tableau de bord, vous verrez cette erreur dans LogCat après avoir appuyé sur "OK" dans la boîte de dialogue SSO native (si Util.ENABLE_LOG est défini sur true):
D/Facebook-authorize (24739): Echec de la connexion: invalid_key: Non concordance de clé Android. Votre clé "uk3udeH7vrOGNFH2FjjdJbdWJWI" ne correspond pas aux clés autorisées spécifiées dans les paramètres de votre application. Vérifiez les paramètres de votre application à l'adresse http://www.facebook.com/developers
Nous avons ajouté le message d'erreur visuel pour vous aider. Ceci, en théorie, ne casse pas les implémentations précédentes si elle a été implémentée correctement pour commencer. Si vous voyez ce message d'erreur, cela signifie que vous n'avez pas configuré correctement les paramètres de votre application sur votre tableau de bord .
Vérifiez votre Android nom de classe/package, Android clés de hachage, etc.). Vous ne verrez pas ce message si vous avez tout fait correctement.
En résumé , vous obtenez ce message d'erreur car il existe un problème de configuration de votre application, par exemple une incompatibilité entre le Android dans votre tableau de bord. Avant que Facebook ajoute ce message d'erreur, la boîte de dialogue s'ouvrirait, puis se fermerait automatiquement et échouerait. Pour résoudre ce problème, vérifiez si LogCat contient des messages d'erreur et assurez-vous que tout est implémenté correctement peut lire sur notre documentation pour vous assurer que tout est correct. N'utilisez pas la réponse acceptée pour cette question.
Vous pouvez également suivre le rapport de bogue externe qu'un développeur Facebook a signalé pour davantage de mises à jour.
Essayez de le définir comme ceci:
Premier téléchargement OpenSSL (si vous avez un ordinateur 64 bits, vous devez télécharger openssl-0.9.8e X64 , et non la dernière version, openssl-0.9.8k X64, car la sortie ne sera pas valide). Extrayez vos fichiers, créez le dossier openssl
, par exemple dans C:/et copiez-y les fichiers.
Trouvez votre chemin vers Keytoo. Le mien est C:\Program Files\Java\jdk1.7.0_05\bin.
Trouvez votre chemin pour debug.keystore
. Vous pouvez voir quel est le chemin si vous ouvrez dans Eclipse, menu Fenêtre -> Préférences -> Android -> = Build, et vous verrez le fichier de clés de débogage par défaut: - et le chemin.
Trouvez votre chemin vers openssl
. Le mien est C:\openssl8e\bin /.
Ouvrez cmd et tapez:
"C:\Programmes\Java\jdk1.7.0_05\bin\keytool" -exportcert -alias androiddebugkey -keystore "C:\Utilisateurs\Utilisateur.Android\debug.keystore" | "C:\openssl8e\bin\openssl" sha1 -binary | "C:\openssl8e\bin\openssl" base64
Aand puis appuyez sur Enter.
Insérer le mot de passe: Android
Vous obtiendrez votre clé de hachage pour debug.keystore
.
Lorsque vous exportez un fichier APK signé et que vous créez un magasin de clés pour l'application, il vous suffit de remplacer dans alias debugkeystore cmd votre alias pour l'application, le chemin d'accès au magasin de clés. le chemin d'accès à votre magasin de clés nouvellement créé pour l'application et insérez le mot de passe de votre app.keystore
, et vous obtiendrez une nouvelle clé de hachage pour votre application signée.
La réponse de Jesse Chen va bien. Le SDK de Facebook fonctionne bien, ne le cassez pas.
J'ai de nouveau rencontré ce problème et découvert que la documentation du SDK de Facebook est corrigée et qu'elle fonctionne très bien maintenant. Maintenant, il explique comment déboguer et libérer les clés de hachage peuvent être définies; faites juste comme il est dit.
Ci-dessous ma vieille histoire. Il manque que vous puissiez définir deux clés de hachage, une pour le débogage et une pour l'application signée et validée pour l'ancien Play Store .
J'ai découvert que le problème était dans mon cas, dans la documentation du SDK de Facebook. Cela nous a guidés pour utiliser le hachage de la clé de débogage et le mettre dans la configuration de l'application Facebook. Hash est guidé pour obtenir ce chemin:
keytool -exportcert -alias androiddebugkey -keystore ~/.Android/debug.keystore | openssl sha1 -binary | openssl base64
Cela fonctionne très bien lorsque vous dupliquez ou exécutez une application à partir de Eclipse .
Toutefois, si vous publiez votre application sur Andoid Play, vous devez utiliser votre propre clé d’éditeur pour exporter le fichier .apk signé. Avec ce .apk, le hachage dans la console de l'application Facebook n'est plus valide! Vous devez obtenir un hachage pour la clé de développeur comme ceci:
keytool -exportcert -alias <developer alias> -keystore ~/.Android/<developer keystore> | openssl sha1 -binary | openssl base64
Et mettez-le dans le Android Key Hash dans la console de l'application Facebook pour votre application publiée. Après cela, l'authentification unique fonctionne à nouveau pour votre fichier .apk signé.
D'après ce que j'ai pu comprendre, c'est un problème de Facebook qui a été signalé. Mais le problème persiste.
Pour contourner ce problème (testé en 2.3.3), il suffit de pirater le SDK de Facebook, de rechercher les méthodes 2 autorisées et de modifier les méthodes DEFAULT_AUTH_ACTIVITY_CODE à FORCE_DIALOG_AUTH . Cela désactivera la fonctionnalité Single Sign On.
Si vous préférez
public void authorize(Activity activity, String[] permissions,
int activityCode, final DialogListener listener)
et désactivez la partie startSingleSignOn . Il est préférable de ne pas le faire, car Facebook finira par résoudre le problème et il ne vous reste plus qu'à rétablir l'ancienne constante.
[~ # ~] éditer [~ # ~]
Cette solution pose des problèmes de sécurité. Vérifiez la réponse de Jesse Chen.
Je suis confronté au même problème. Après 24 heures et de nombreuses recherches, nous utilisons cette méthode pour résoudre mon problème.
Vérifiez l'identifiant de l'ensemble actuel de votre projet Xcode, par exemple: com.votrenom_entreprise.votre nomapp
utilisez le même identifiant de paquetage com.votrenomentreprise.votre nomappli pour créer une application dans Facebook (voir pièce jointe).
Bien que tardif, toujours utile: * Voici la bonne façon de faire (pour la clé de débogage, changez en conséquence pour la libération): *
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\<User>\.Android\debug.keystore" > <Drive letter>:\debug.txt
openssl sha1 -binary "<Drive letter>:\debug.txt" > "<Drive letter>:\debug_sha.txt"
openssl base64 -in "<Drive letter>:\debug_sha.txt" > "<Drive letter>:\debug_base64.txt"
Le hachage se trouve dans le dernier fichier généré: debug_base64.txt .... ouvrez-le et copiez le hachage.
n'oubliez pas de remplacer "" et par votre nom d'utilisateur et la lettre de lecteur de votre choix
J'ai eu ce problème il y a quelques minutes moi-même sur 4.0.4 et il semble s'être résolu.
Lorsque vous créez le hachage de clé, vous pouvez vous retrouver avec quelque chose qui porte le signe d'égalité "=" à la fin, comme ga0RGNYHvNM5d0SLGQfpQWAPGJ8 = . Tandis que Facebook accepte volontiers le signe d'égalité comme élément de la clé de hachage, vous devez le supprimer pour que cela fonctionne.
En outre, consultez la réponse acceptée à Android Facebook SDK 3.0 indique que "remote_app_id ne correspond pas à l'identifiant stocké" lors de la connexion : lorsque vous obtenez le hachage de clé pour le magasin de clés de débogage, utilisez le mot de passe "Android". Sinon, le hachage de la clé sera incorrect et vous obtiendrez l'erreur spécifiée dans la question (soyez gentil et votez la réponse si cela vous a aidé.)
À propos des applications signées avec le magasin de clés OWN: Après avoir passé plusieurs heures à résoudre ce problème, je l’ai enfin compris et je souhaite fournir une réponse à ceux qui souffrent encore:
Mes étapes: J'ai signé mon application via Eclipse avec mon propre fichier de clés (PAS debug.keystore). Via la ligne de commande et les commandes connues (keytool -exportcert -alias -keystore ~ / .Android/| openssl sha1 -binary | openssl base64) J'ai reçu avec succès le hachage de clé. Collé la clé de hachage dans le tableau de bord dev, attendu quelques minutes -> Toujours la même erreur (comme spécifié dans la question ci-dessus). J'ai essayé plusieurs outils de clé différents, sur plusieurs jdks, etc ... rien n'a changé.
Solution: J'ai activé le débogage dans le manifeste, le débogage dans le sdk de Facebook. alors j'ai signé l'apk avec mon propre magasin de clés et l'ai téléchargé sur un appareil réel. J'ai connecté l'appareil via USB et ouvert la perspective DDMS pour voir logcat sur l'appareil.
J'ai lancé mon application et laissé le message d'erreur se produire. Il imprime une clé totalement différente de la clé générée par keytool. J'ai pris cette clé de logcat, je l'ai collée dans le tableau de bord du développeur et le tour est joué -> TOUT TRAVAIL
Je ne sais toujours pas pourquoi cela se produit ni ce qui cause la mauvaise clé, mais de cette façon, cela fonctionne pour moi.
Habituellement, ce problème peut être résolu avec deux vérifications:
Sur un système Debian comme ubuntu, utilisez le keytool
de Java
trouvé dans le répertoire /usr/lib/jvm/jdk*.*.*/bin/keytool
et générer comme ça
/usr/lib/jvm/jdk1.7.0/bin/keytool -exportcert -alias androiddebugkey -keystore ~/.Android/debug.keystore | openssl sha1 -binary | openssl base64
De cette façon, vous obtenez la clé de hachage authentique qui peut être placée sous votre application hash de Facebook.
J'ai réussi à résoudre le problème que j'avais avec une configuration incorrecte pour Facebook sur Android) en m'assurant d'avoir la clé de hachage correcte pour une version.
Pour obtenir la clé de hachage de la version de version, recherchez la clé que vous avez utilisée pour signer l'application et procédez comme suit: insérez le nom de votre alias de magasin de clés (sans crochets). Si vous ne connaissez pas votre alias, vous pouvez le trouver en exportant votre application en tant qu'application signée et l'alias se trouve sur la deuxième page de l'assistant. Insérez également le chemin d'accès à votre magasin de clés (sans crochets).
keytool -exportcert -alias [Alias of your keystore] -keystore [Path to keystore] | openssl sha1 -binary | openssl base64
J'ai eu la même erreur il y a quelques jours. Dans mon cas, cela était dû à une incompatibilité de clé Android). Voici comment je l'ai corrigée si cela pouvait également vous aider:
Ouvrez Util.Java dans le SDK de Facebook, définissez private static boolean ENABLE_LOG = true;
. Maintenant, lancez votre application et entrez votre identifiant de messagerie et votre mot de passe. Facebook renvoie une signature s'il y a une incompatibilité de clé. Vous trouverez cette clé (signature) dans LogCat . Il suffit de copier cette clé et de la coller dans le tableau de bord de l'application. Cela devrait résoudre le problème. N'oubliez pas de définir private static boolean ENABLE_LOG = true;
retour à faux.
C'est un problème de magasin de clés. Configurez votre Eclipse pour qu'il utilise le même magasin de clés pour lequel l'application a été configurée.
Également rencontré ce problème.
Allez simplement sur la page de démarrage des développeurs Facebook ici
et suivez l'étape 4 - la chose avec la ligne de commande.
Travaillé pour moi.
Prendre plaisir.
Je viens d'avoir le même problème et la solution s'est avérée super simple. Lorsque j'ai créé l'application dans le tableau de bord, je n'avais ajouté que le hachage de clé pour le fichier de clés de débogage Android. Tout fonctionne correctement si vous installez l'application en tant que développeur via un câble USB dans ce cas .
Une fois que vous avez une application dans le Play Store, vous utiliserez une clé de production pour la signer. Cela signifie également que vous devez obtenir le hachage de la clé de production, comme pour la clé de débogage, et l'ajouter en tant que deuxième hachage à la liste des hachages d'application natifs.
juste pour vous rappeler comment fonctionne le hachage de la clé: keytool -exportcert -alias -keystore ~ / keys/Android_keystore | openssl sha1 -binary | openssl base64
J'espère que ça t'as aidé!
J'ai eu un problème similaire, mais pour iOS.
La solution consiste à configurer l'application Facebook sur le tableau de bord de développeur Facebook.
Pour iOS, 2 choses doivent être faites:
Connexion Facebook activée
L'ID de paquet doit être identique à celui de l'application
J'ai fait un Toast
pour les exceptions et constaté qu'il lève une exception d'incompatibilité de clé aujourd'hui. J'ai ajouté la clé dans la page de l'application FB
et tout fonctionne correctement.