web-dev-qa-db-fra.com

Toujours en état de session: CLOSED_LOGIN_FAILED, jeton: {jeton AccessToken: ACCESS_TOKEN_REMOVED dans Facebook Android sdk3.0.

Toujours en état de session: CLOSED_LOGIN_FAILED, jeton: {jeton AccessToken: ACCESS_TOKEN_REMOVED dans Facebook Android sdk3.0. Même quand je lance les exemples donnés par le sdk de facebook, il authentifie et ne le redirige pas vers le prochain flux.

35
kumar

Pour une raison quelconque, le hachage généré par l'outil de clé pour moi n'est pas le même que mon application. C'est ce qui a fonctionné pour moi. Générez un hachage 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));
    }

Assurez-vous de remplacer "your_package_name>" par votre nom de package correspondant. Regardez logcat et prenez le keyhash et entrez-le dans les paramètres de votre application facebook.

51
Karim Varela

ACCESS_TOKEN_REMOVED n'a rien à voir avec le problème. Il s’agit simplement du SDK de Facebook qui ne consigne pas le jeton d’accès. Vous pouvez donc ignorer cette partie de l'erreur en toute sécurité.

Il y a deux choses qui sont des causes probables de CLOSED_LOGIN_FAILED:

  1. Vous avez entré des informations d'identification incorrectes dans l'application native de Facebook elle-même.

  2. Le hachage de clé Android entré dans les paramètres de votre application sur developers.facebook.com ne correspond pas au hachage de clé de l'APK.

Pour résoudre les problèmes # 1 Ouvrez l'application native Facebook et assurez-vous que vous êtes connecté correctement et que vous pouvez accéder au contenu. Si des informations d'identification incorrectes ont été saisies dans l'application native Facebook (vous avez peut-être récemment changé de mot de passe), le SDK de Facebook essaiera à plusieurs reprises d'effectuer une connexion unique à l'aide de l'application native et de signaler CLOSED_LOGIN_FAILED. 

Pour résoudre le problème # 2, suivez simplement les instructions sous "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 Kit de développement logiciel (SDK) Facebook échoueront car la configuration de l'application pour les exemples d'application n'aura pas enregistré votre hachage de clé de débogage. Vous trouverez des instructions pour résoudre ce problème sous "Exécuter les exemples" dans le même lien. Voici une citation:

En termes simples, chaque application Android que vous allez créer sera signée, et vous devra enregistrer la clé de hachage de chaque application avec Facebook en tant que sécurité vérifier l'authenticité - comme nous le verrons plus tard. Mais pour contourner ce contrôle pour les exemples de SDK et pour les rendre rapidement opérationnels, vous pouvez Ajoutez votre clé de hachage à votre profil global de développeur Facebook.

7
Matt Accola

J'ai eu un problème similaire - j'obtenais CLOSED_LOGIN_FAILED avec com.facebook.FacebookOperationCanceledException: User canceled operation et je n'annulais certainement pas l'opération.

Après avoir passé 7 à 8 heures à jouer avec chaque ligne de mon code d'application, j'ai remarqué que mon activité était définie dans mon manifeste. Le supprimer l'a résolu.

Android:launchMode="singleInstance"
5
dtbarne

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;
    }
}
5
Christopher Masser

Si vous utilisez l'application Facebook en mode sandbox, assurez-vous que le compte que vous utilisez figure dans la liste des administrateurs ou des développeurs autorisés.

3
Sabo

Essayez de désinstaller votre application facebook de votre appareil, puis de le réinstaller.

2
Karim Varela

Une autre solution consiste à supprimer la méthode de connexion sso. Cela peut être fait comme ça:

LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton);
authButton.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);

Source: Android - Force Facebook connexion - Dépassement de pile

2
John Smith

J'ai rencontré le même problème, mais la solution a été que je devais entrer sur Facebook (developper.facebook) et dans les paramètres de mes applications, puis ajouter les clés Si utilisé et ajouter le nom du package Si cela ne vous aide pas, accédez à ce lien pour trouver une autre solution: " Le Kit de développement logiciel (SDK) Android Facebook donne" remote_app_id ne correspond pas à l'identifiant stocké "lors de la connexion "

2
Chris Sim

Si vous ne signez pas explicitement votre APP avec une certaine clé, stockez le IDE, il le signera pour vous avec celui par défaut. Vous devez signer votre projet avec un magasin de clés spécifique, extraire la clé de hachage et l'ajouter à votre compte Facebook.

comment signer votre projet

comment extraire la clé de hachage

0
toshkinl

Nous avons rencontré le même problème et avons longtemps cherché et cherché sur Google. J'ai vérifié la clé de hachage, le fichier manifeste et beaucoup d'autres choses pour résoudre ce problème. Nous utilisons l'ancienne version 3.23.1 de la sdk de facebook et notre application n'a pas été en mesure de se connecter à facebook, pour certains téléphones uniquement. Il a renvoyé l'état "CLOSED_LOGIN_FAILED" et via logcat il a signalé "Impossible d'appeler LoginActivity avec un package d'appel null. Cela peut se produire si le launchMode de l'appelant est singleInstance".

Sur certains téléphones, comme ceux de Fairphone, une nouvelle fonctionnalité a été ajoutée: https://fairphone.zendesk.com/hc/en-us/articles/207164396-What-is-the-Privacy- Impact-feature-

Cette fonctionnalité évite la communication fiable vers facebook dans certaines circonstances spéciales. Dès que vous la décochez, redémarrez votre application et acceptez les autorisations, notre application se comportait comme prévu.

J'espère que cela aidera à éviter les cheveux gris que j'ai eu lors de la réparation. 

0
Chris

dans mon cas, l'id de l'application Facebook était erroné et le hachage de la clé n'a pas été ajouté à l'application sur facebook

assez étrange, il fonctionnait bien sur une version non signée à déboguer!

0
Ahmed Adel Ismail