Je reçois cette erreur. Lorsque j'essaie de me connecter avec Facebook à mon application. Lors de la première authentification, cela fonctionnera correctement. Après avoir désarmé ma candidature et essayé maintenant de me connecter à Facebook, je reçois cette erreur.
Autre problème : Après vous être authentifié sur le périphérique1 et essayez de vous connecter avec Facebook sur le périphérique2, la même erreur se produit.
Solution trouvée: Lorsque je supprime l'authentification de l'application dans les paramètres de l'application Facebook, il fonctionne dans le scénario ci-dessus, mais ce n'est pas une bonne solution. Comment pouvons-nous en informer les utilisateurs? faire cette action?
btnFbLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(accessToken != null) {
boolean expires = accessToken.isExpired();
if(!expires) {
performFbLoginOrSignUp(accessToken);
}
} else {
LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
callbackManager = CallbackManager.Factory.create();
if (loginButton != null) {
loginButton.setReadPermissions("public_profile", "email", "user_friends");
if (CommonUtil.isConnectingToInternet(LoginActivity.this)) {
loginButton.performClick();
loginButton.setPressed(true);
loginButton.invalidate();
loginButton.registerCallback(callbackManager, mCallBack);
loginButton.setPressed(false);
loginButton.invalidate();
}
}
}
}
});
Dans l'exemple Facebook ayant également un problème: lien GitHub de l'exemple Facebook
Étapes pour reproduire:
Lancez l'application Connectez-vous avec Facebook Authentifiez le profil FB.
Désinstallez l'application et réinstallez-la.
Maintenant, essayez de vous connecter avec Facebook.
Je fais aussi face à ce problème. Mettez à jour votre clé de hachage sur Facebook
L'erreur se produit en raison d'une clé de hachage non valide.
Nous pouvons créer une clé de hachage à l’aide de la commande ci-dessous et la mettre à jour ici sous Paramètres-> Basique -> Android HashKeys
keytool -exportcert -alias ADD_RELEASE_KEY_ALIASE_HERE -keystore ADD_UR_KEYSTORE_PATH_HERE | openssl sha1 -binary | openssl base64
Vous pouvez trouver l'alias de clé Relase de votre magasin de clés à l'aide de la commande ci-dessous, si nécessaire:
keytool -list -keystore ADD_UR_KEYSTORE_PATH_HERE
J'ai également rencontré un problème, par exemple en utilisant le HashKey ci-dessus, la connexion fonctionne correctement si j'installe le fichier APK directement sur le périphérique. Le correctif est le suivant:
Ce problème se produit car vous avez déjà authentifié l'application via Facebook et votre code peut contenir Authentifier à chaque fois que Facebook (Rechercher et supprimer).
Suivez ces étapes:
Accédez aux paramètres de Facebook.
Supprimer votre application.
Assurez-vous que vous avez ajouté la connexion Facebook dans la page de développeur Facebook et que vous avez activé le client OAuth connexion.
Accédez à votre code et remplacez la méthode de rappel:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mFacebookCallbackManager.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
Intent secondActivityIntent = new Intent(this, RedirectActivity.class);
startActivity(secondActivityIntent);
}
}
Dans la méthode Oncreate, appelez AccessToken:
accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(
AccessToken oldAccessToken,
AccessToken currentAccessToken) {
// Set the access token using
// currentAccessToken when it's loaded or set.
}
};
// If the access token is available already assign it.
accessToken = AccessToken.getCurrentAccessToken();
if (accessToken != null && !accessToken.isExpired())
{
GraphRequest request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
if(null != object) {
try
{
Intent i = new Intent(MainActivity.this, Feedback.class);
startActivity(i);
String email = object.getString("email");
String birthday = object.getString("birthday");
}
catch (Exception ex)
{
Toast.makeText(MainActivity.this, ex.toString(), Toast.LENGTH_SHORT).show();
}
} else {
// call your authentication process
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,birthday,link");
request.setParameters(parameters);
request.executeAsync();
}
Le problème pour moi est vraiment avec la clé de hachage, ce n'est pas valide.
J'ai eu exactement le même problème et c'était très difficile à diagnostiquer. La raison en est que Facebook ne vérifie pas la clé de hachage lors de la première connexion et il semble que la clé soit correcte, mais en réalité ce n'est pas le cas. Deuxièmement, le message d'erreur est simplement une idiocratie. Troisièmement, la résolution: essayez le lien suivant, cela m'a aidé.
Meilleures instructions pour générer une clé de hachage valide
Supprimer l'application des paramètres de l'utilisateur dans Facebook (compte).
Désinstallez l'application.
Obtenez le nouveau hachage à l'aide de la version ou du nouveau magasin de clés de débogage. Utilisez cette commande:
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
Ajoutez le nouveau hachage sur le tableau de bord Facebook.
J'ai rencontré le même problème.
C'était une erreur de mon côté.
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
Lorsque vous tapez cette commande, il affiche l'invite Enter keystore password:
. Je donnais le keyPassword
à la place storePassword
et il n'a pas donné de message d'erreur mais a généré un hachage différent!
Je renvoie cela,
https://developers.facebook.com/docs/Android/getting-started
ou ajoutez simplement le code ci-dessous dans la méthode onCreate (), qui renverra le hachage de la clé.
// Add code to print out the key hash
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.facebook.samples.hellofacebook",
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) {
}
Ajouter le code ci-dessus pour récupérer la clé, cette clé que vous pouvez stocker
https://developers.facebook.com/docs/facebook-login/Android
ici. Maintenant ça va marcher.
Cela a fonctionné pour moi, espère que cela fonctionnera pour vous aussi.
Je faisais face au même problème. J'avais mes clés parfaitement définies, je faisais toujours face au même problème. Je n'ai pas pu me connecter même pour la première fois.
La solution à mon problème était:
Accédez au tableau de bord de votre application ici
Dans le volet de gauche, sous l'onglet Produits, vérifiez que vous avez ajouté la connexion Facebook. Sinon, ajoutez-le là.
Si toutes vos autres configurations sont en place. Cela fonctionne parfaitement après cela.
J'ai eu le même problème sur mon Redmi Note 3. Testé sur Samsung. Pas de problème. Je me demande si c'est spécifique à Redmi.
J'ai été confronté au même problème et j'ai constaté que la clé de hachage générée pour pouvoir être insérée dans la console de développement Facebook n'était pas appropriée. J'ai essayé de générer une clé de hachage à partir d'un PC différent et celui-ci m'a demandé de saisir un mot de passe pour ce fichier de clés, ce qui n'était pas le cas sur mon PC. Assurez-vous donc que vous serez invité à entrer mot de passe de la clé de stockage lors de la création de la clé de hachage, puis à l'insérer dans la console du développeur Facebook.
Commande pour générer la clé de hachage:
keytool -exportcert -alias TYPE ALIAS HERE -keystore KEY_STORE_FILE_PATH_HERE | openssl sha1 -binary | openssl base64
J'ai eu le même problème aujourd'hui sur mes sites et ensuite j'ai réalisé que j'utilisais l'ancien default_graph_version = v3.2. Je l'ai changé au plus tard:
default_graph_version = v4.0
Maintenant tout fonctionne à nouveau. Essaie.