J'obtiens toujours Session state:CLOSED_LOGIN_FAILED, token:{AccessToken token:ACCESS_TOKEN_REMOVED dans facebook Android sdk3.0. Même lorsque j'exécute les exemples donnés par le sdk de facebook, il s'authentifie et ne redirige pas vers le flux suivant. il affiche lui-même la page précédente.
Réponses
Trop de publicités?Pour une raison ou une autre, le hash généré par le keytool n'est pas le même que celui de mon application. C'est ce qui a fonctionné pour moi. Générer un hash en utilisant le code standard fourni par facebook :
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));
}
Veillez à remplacer "your_package_name>" par le nom du paquet correspondant. Regardez logcat et récupérez le keyhash et entrez le dans les paramètres de votre application facebook.
Le paramètre ACCESS_TOKEN_REMOVED n'a rien à voir avec le problème. Il s'agit simplement du SDK de Facebook qui n'enregistre pas le jeton d'accès. Vous pouvez donc ignorer cette partie de l'erreur.
Deux éléments peuvent être à l'origine du problème CLOSED_LOGIN_FAILED :
-
Vous avez saisi des informations d'identification incorrectes dans l'application native de Facebook.
-
Le hachage de la clé Android entré dans les paramètres de votre application sur developers.facebook.com ne correspond pas au hachage de la clé de l'APK.
Pour résoudre le problème #1 Ouvrez l'application native Facebook et assurez-vous que vous êtes bien connecté et que vous pouvez accéder au contenu. Si vous avez saisi des informations d'identification incorrectes dans l'application native Facebook (peut-être avez-vous récemment changé votre mot de passe), le SDK Facebook essaiera à plusieurs reprises d'effectuer un SSO à l'aide de l'application native et renverra le message CLOSED_LOGIN_FAILED.
Pour résoudre le problème n°2, il suffit de suivre les instructions de la rubrique "Créer une application Facebook" sur cette page, https://developers.facebook.com/docs/getting-started/facebook-sdk-for-Android/3.0/ .
Les exemples fournis avec le SDK Facebook échoueront parce que la configuration de l'application pour les exemples d'application n'aura pas enregistré le hachage de votre clé de débogage. Vous trouverez des instructions pour résoudre ce problème dans la section "Run the Samples" (Exécuter les exemples) du même lien. Voici une citation :
En d'autres termes, toutes les applications Android que vous créerez seront signées. devrez enregistrer le hachage de la clé de chaque application auprès de Facebook pour d'authenticité, comme nous le verrons plus loin. [ ] pour les échantillons du SDK et les rendre rapidement opérationnels, vous pouvez ajouter le hash de votre clé à votre profil global de développeur Facebook.
J'ai eu la même erreur et j'avais oublié la ligne suivante dans onActivityResult de l'activité de démarrage :
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
Voici la méthode complète :
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case RESULT_CODE_IMPORT_FACEBOOK:
//do stuff
break;
default:
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
break;
}
}
J'ai eu un problème similaire - je recevais CLOSED_LOGIN_FAILED
avec com.facebook.FacebookOperationCanceledException: User canceled operation
et je n'allais certainement pas annuler l'opération.
Après avoir passé 7 à 8 heures à jouer avec chaque ligne du code de mon application, j'ai remarqué que ce paramètre était défini sur mon activité dans mon manifeste. Le fait de l'enlever a résolu le problème.
android:launchMode="singleInstance"