intégration Facebook d'android
Bonjour tout le monde dans un de mes app j'ai besoin d'obtenir des données de fb... Je suis en train de faire..
j'ai créé app ID il se connecte avec succès mais après la déconnexion je me connecte alors il me donne
Qu'est-ce que je fais de mal? S'il vous plaît suggérer que j'utilise "Facebook sdk ... J'ai installé Facebook dans mon téléphone... ce bon fonctionnement dans émulateur qui n'a pas d'application Facebook intégrée installée
c'est mon code
if (FB_APP_ID == null) {
Builder alertBuilder = new Builder(this);
alertBuilder.setTitle("Warning");
alertBuilder.setMessage("A Facebook Applicaton ID must be " +
"specified before running this example: see App.java");
alertBuilder.create().show();
}
// Initialize the dispatcher
Dispatcher dispatcher = new Dispatcher(this);
dispatcher.addHandler("login", LoginHandler.class);
dispatcher.addHandler("stream", StreamHandler.class);
dispatcher.addHandler("logout", LogoutHandler.class);
// If a session already exists, render the stream page
// immediately. Otherwise, render the login page.
Session session = Session.restore(this);
if (session != null) {
dispatcher.runHandler("stream");
} else {
dispatcher.runHandler("login");
}
18 réponses
la clé generate hash est erronée. Vous pouvez obtenir la clé de hachage en deux étapes. On est par le biais de l'invite de commande. Un autre est par le biais de codage. La touche de hachage par l'intermédiaire de l'invite de commande ne fonctionne que pour la première fois. Je ne sais pas la raison. J'ai également eu le même problème. Alors j'ai essayé par le biais d'un programme.
suivez ces étapes:
coller le code suivant dans oncreate()
.
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.example.packagename",
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) {
}
modifier " com.exemple.packagename" avec votre nom de paquet dans le codage ci-dessus sans faute(vous pouvez trouver votre nom de paquet dans le fichier manifeste Android).
lancez votre application. Allez à l'activité où vous avez collé le code ci-dessus. Dans la recherche logcat pour "KeyHash". Vous pouvez trouvé une clé de hachage. Copiez le hachage de la clé et allez à la page du tableau de bord de L'application Facebook. Allez dans Paramètres et entrez les détails comme dans l'image ci-dessous.
une fois que vous fini l'étape ci-dessus. Vous pouvez maintenant vous connecter sur facebook. Pour plus de détails sur le hachage de clé, consultez le lien
si vous ajoutez une mauvaise information dans la page des paramètres signifie qu'il donnera une erreur. donc, utiliser l'information correcte. Et aussi, si le public(autre que vous) devez utiliser votre application, vous devez activer l'autorisation (change "yes" in the "Status & Review" next to setting)
.
si vous faites face à ce problème, alors mettez cette clé dans votre developer.facebook.com
, Puis assurez-vous que votre application est live sur
ce cercle vert indique que l'application est en direct
s'il n'est pas alors suivre ces deux étapes pour faire de votre application live
Étape 1 allez à votre application - > paramètres = > et ajouter courriel de Contact et appliquer enregistrer les changements
Setp 2 puis goto App Review option et assurez-vous que cette bascule est oui j'ai ajouté un capture d'écran
Note: si vous voulez copier le hashkey, vérifiez le BlueServiceQueue dans Logcat.
si vous utilisez Google Play app Signing:
Open App signing section in Google Play Console , et obtenir SHA1 de app signing certificate , que de le convertir en base64 , par exemple avec cet outil: http://tomeko.net/online_tools/hex_to_base64.php?lang=en
j'ai eu le même problème.J'étais sûr que c'était dû à une très petite faute et oui, il était!!!! J'ai trouvé la solution.
lors de la génération de "debug clé de hachage dans mon ordinateur, j'ai entré le mot de passe de mon système.Mais le mot de passe doit être le suivant -
Entrer le mot de passe de keystore: "android "
C'était le seul problème dans mon cas.
----- Pour générer déboguer clé de hachage, utilisez cette commande -
keytool-exportcert-alias androiddebugkey-keystore ~/.android / debug.keystore / openssl sha1-binaire / openssl base64
entrez le mot de passe de keystore: 'android'
----- Pour Générer des Libération clé de hachage, utilisez cette commande -
keytool -exportcert -alias alias du fichier de stockage des clés" -keystore "Votre chemin d'accès au fichier lors de la signature de l'app" | openssl sha1 -binaire | openssl base64
Donnez votre mot de passe après avoir exécuté cette commande.
j'ai connu le même problème. J'ai fait une courte recherche sur les raisons possibles de ce comportement étrange et j'ai trouvé le texte suivant:
-
lors de la première exécution D'une nouvelle application Facebook, il permettra la connexion/Connexion même si vous ne spécifiez pas de touches de hachage.
-
pour moi, le tutoriel que Facebook a fourni N'a pas généré le bon hachage de touche, parce qu'il donnait à la mauvaise configuration . Lors de l'exécution:
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
assurez - vous de vérifier toutes les propriétés-le HOMEPATH
, l'existence du keystore, etc. Peut-être que vous devez aussi fournir un mot de passe.
-
c'est la solution suggérée par @Mahendran qui a généré la configuration appropriée .
-
En outre, si vous voyez l'erreur Initialement posté ( http://i.stack.imgur.com/58q3v.png ), très probablement le hachage de clé que vous voyez sur l'écran est votre vrai. si rien d'autre ne fonctionne, essayez de le saisir sur Facebook.
j'ai eu tous ces résultats avec: Windows 7 64-bit edition, Android Studio 1.2.2, JDK 7.
selon Connexion Facebook pour Android , vous devez fournir la valeur de hachage clé. Pour l'obtenir, vous aurez besoin de la clé utilisée pour signer votre demande.
keytool \
-exportcert \
-alias YourKeyAlias \
-storepass YourStoreKeyPassword \
-keystore PathToYourKeyStoreFile | openssl sha1 -binary | openssl base64
j'ai essayé tout ce qui précède et rien n'a aidé mon cas avec mes clients! Mon client s'est souvenu qu'il avait installé L'application Facebook sur son appareil. Après qu'il l'a supprimé la connexion fonctionne parfaitement. Le hashkey a été changé et j'ai remplacé les vieilles clés de hachage de la Console des développeurs Facebook avec la clé de l'erreur (comme suggéré ci-dessus) et cela fonctionne! L'application Facebook elle-même pourrait être le problème, donc vous feriez mieux de comprendre cela sur un appareil avec L'application Facebook installé et sur un appareil avec L'application Facebook pas installé et gérer les deux cas..
vous devez créer deux hachures de touches, L'une pour le débogage et l'autre pour la publication.
Pour Debug clé de hachage:
sur OS X, exécuter:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
sous Windows, exécuter:
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl
base64
clé de Débogage hachages source
Pour Libération clé de hachage:
sur OS X, exécuter: (remplacer quoi entre <> avec vos valeurs )
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
sur Windows, utilisez: (remplacer ce qui entre <> et vos valeurs)
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
j'avais le même problème. première connexion, très bien, mais ensuite, le hachage de la clé invalide.
même si ce n'est pas un fil D'Unité, j'ai trouvé ma réponse ici. Je laisse donc ma réponse, au cas où quelqu'un d'autre (égaré comme moi) tomberait dessus.
SDK Facebook pour L'Unité obtient le mauvais hachage de clé. Il obtient la clé de "C:\Users"votre utilisateur".android\debug.keystore" et, dans un monde parfait, il devrait l'obtenir du keystore que vous avez créé dans votre projet. C'est pourquoi il vous dit que la clé de hachage n'est pas enregistré.
comme suggéré par Madi , vous pouvez suivre les étapes sur ce lien pour trouver la bonne clé. Il suffit de faire pointer shure sur le clavier à l'intérieur de votre projet, sinon vous n'obtiendrez pas la bonne clé.
collez le code suivant dans votre méthode OnCreate
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.example.packagename",
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) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
il suffit de modifier le nom du paquet.Ensuite, allez à votre Log cat et sélectionnez Debug search ici, puis vous trouverez la clé de hachage. Maintenant, copiez cette clé de hachage et allez au développeur.Facebook.app_id site puis éditez votre clé de hachage puis appuyez sur Enregistrer. Maintenant, exécutez votre projet android à nouveau je pense que le problème sera résolu.
Après une longue recherche, nous avons trouvé une solution.
nous avions défini les permissions comme:
loginButton.setReadPermissions (public_profile email);
cela a fonctionné pour la première fois, mais lorsque nous nous sommes reconnectés à FB, cela a donné L'erreur de hachage invalide.
la solution simple était de changer la ligne ci-dessus en:
loginButton.setReadPermissions(Arrays.asList( "public_profile", "email"));
Et ça a fonctionné comme un bonheur!
J'espère que ça aidera quelqu'un.
Facebook devrait retourner l'exception correcte au lieu de l'erreur de clé de hachage trompeuse et invalide.
ce code vous donnera votre hash pour facebook mais vous devez suivre ces étapes afin d'obtenir le hash release condidate . 1. copiez et collez ce code dans votre activité principale
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.example.packagename",
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) {
}
- générer signé apk.
- connectez votre téléphone portable et assurez-vous qu'il reste connecté .
-
installez et lancez l'apk dans votre téléphone en déplaçant manuellement la version apk sur votre téléphone.
-
regardez maintenant sur android logcat (utilisez filter KeyHash: ) vous devriez voir votre clé de hachage de version pour facebook . il suffit de le copier et de le coller dans votre https://developers.facebook.com/apps c'est sous Paramètres.
-
maintenant, vous pouvez tester l'application, il devrait fonctionner parfaitement bien.
bonne chance.
Cela peut aider quelqu'un avec le même problème
- générer du hachage de clé en utilisant le code ci-dessous
keytool -exportcert -alias <your_keystore> alias -keystore <your_keystore_file> | openssl sha1 -binary | openssl base64
2.Coller dans le champ requis dans développeur facebook
3.Dans le fichier android studio - > Structure du projet
ajouter les paramètres de signalisation
sélectionnez la configuration de signature que nous avons créée
5.choisir le type de construction
6.sélectionnez générer une variante et construire
j'ai eu le même problème quand je déboguais mon application. J'ai réécrit le hash que vous avez rayé dans l'image ci-jointe (celle que Facebook dit invalide) et l'ai ajouté dans la console des développeurs de Facebook à des hash clés. Juste être prudent sur les fautes de frappe.
cette solution ressemble plus à une solution de rechange facile qu'à une solution appropriée.
ce que facebook a utilisé n'est pas le mot de passe par défaut et l'alias pour déboguer. Vous devez le changer après et il fonctionnera.
/usr/lib/jvm/jdk1.8.0_66/bin/keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
si vous n'avez rien changé avec le mot de passe par défaut, il devrait être android. Vous pouvez également le configurer dans la construction.dossier gradle. Mais le même mot de passe d'alias doit être utilisé pour générer du hash.
android{
signingConfigs {
release {
storeFile file("~/.android/debug.keystore")
storePassword "android"
keyAlias "androiddebugkey"
keyPassword "android"
}
}
}
après tant d'essais, j'ai trouvé une solution. J'ai généré et ajouté à la fois les clés de débogage et de publication sur Facebook developer console et j'obtiens toujours l'erreur.
la seule solution qui a fonctionné pour moi était de désinstaller le programme OpenSSL de google et de télécharger à partir de http://slproweb.com/products/Win32OpenSSL.html
Cela fonctionne comme par magie
utiliser le code ci-dessous dans onCreate() méthode de votre activité
try {
PackageInfo info = getPackageManager().getPackageInfo(
"your application 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 (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
exécutez ce code, cela générera la clé de hachage. copiez cette phrase clé dans la configuration de L'application Facebook -- > enregistrez les modifications. puis connectez-vous à votre application. cela fonctionne parfaitement dans l'avenir aussi.
les Gars c'est beaucoup de bonnes réponses. Juste une chose. Coller le hachage reçu dans Application -> Paramètres - > principal pas via le tutoriel de démarrage rapide.