Quelqu'un sait ce que cette erreur signifie? Je l'obtiens dans LogCat Shell chaque fois que je me connecte avec mon application Android à Facebook (via un émulateur).
Le code qui autorise la fonctionnalité:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.authorize);
mPrefs = getPreferences(MODE_PRIVATE);
loginPref = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
String access_token = mPrefs.getString("access_token", null);
long expires = mPrefs.getLong("access_expires", 0);
if(access_token != null) {
Singelton.mFacebook.setAccessToken(access_token);
}
if(expires != 0) {
Singelton.mFacebook.setAccessExpires(expires);
}
Singelton.mFacebook.authorize(this, new String[] {"email","user_birthday"}, new DialogListener() {
@Override
public void onComplete(Bundle values) {
SharedPreferences.Editor editor = mPrefs.edit();
editor.putString("access_token", Singelton.mFacebook.getAccessToken());
editor.putLong("access_expires", Singelton.mFacebook.getAccessExpires());
editor.commit();
SharedPreferences.Editor logEditor = loginPref.edit();
logEditor.putBoolean("login", true);
logEditor.commit();
addUser();
}
@Override
public void onFacebookError(FacebookError error) {
errorHandler();
}
@Override
public void onError(DialogError e) {
errorHandler();
}
@Override
public void onCancel() {
Log.d("MyApp", "Facebook cancel");
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Singelton.mFacebook.authorizeCallback(requestCode, resultCode, data);
}
Cela peut arriver pour les raisons suivantes:
Cela signifie simplement que l'application Facebook n'est pas installée sur votre téléphone. Ne vous inquiétez pas trop à ce sujet.
Le fonctionnement du SDK Facebook pour Android est le suivant: chaque fois que vous devez faire une demande à Facebook, le SDK vérifie si l'application Facebook est déjà installée sur votre appareil. S'il est installé, la demande est faite via l'application. Si l'application n'est pas installée, elle récupère les données elle-même.
Si les quatre solutions ne permettent pas de résoudre le problème, cela peut aider. J'avais cette même erreur quand j'ai commencé à utiliser Fragments pour implémenter la connexion à Facebook. J'utilisais le fragment standard et non la bibliothèque de support technique Fragments v4 et, après être passé à la bibliothèque de support technique Fragment, mon problème est parti. Cela peut être unique à ma situation mais je pensais le partager au cas où. N'oubliez pas non plus de définir le fragment si vous utilisez la méthode du bouton de connexion.
myFacebookLoginButton.setFragment(this); //Assuming you're in a Fragment class
Ajoutez simplement l'autorisation suivante au fichier AndroidManifest.xml
<uses-permission Android:name="Android.permission.SET_DEBUG_APP"/>
N'oubliez pas de remplacer onActivityResult et de vérifier s'il a appelé (par exemple, si vous utilisez des fragments)
PS (peut-être que ce sera utile pour les autres, j'ai rencontré ce problème quand utilisait parse facebook login =)
Comme @ Vinay-S-Shenoy l'a dit, cela se produit lorsque l'application Facebook n'est pas installée sur le téléphone ou le simulateur. Pour éviter cette erreur, ce que je fais est de vérifier si l’application Facebook est installée avant d’appeler la méthode facebook.authorize.
public boolean isFacebookAvailable() {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT, "Test; please ignore");
intent.setType("text/plain");
final PackageManager pm = this.getApplicationContext().getPackageManager();
for(ResolveInfo resolveInfo: pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)){
ActivityInfo activity = resolveInfo.activityInfo;
// Log.i("actividad ->", activity.name);
if (activity.name.contains("com.facebook.katana")) {
return true;
}
}
return false;
}
Pour moi (mais je travaille avec ionic) c’était à cause d’une erreur d’image manquée/de template, avant le lancement:
ionic cordova build Android
Peut-être que cela peut aider les autres ...