web-dev-qa-db-fra.com

Impossible de trouver les informations sur le fournisseur pour com.facebook.katana.provider.AttributionIdProvider

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);
}
49
Rom Freiman

Cela peut arriver pour les raisons suivantes:

  1. Vous n'êtes pas connecté à internet
  2. Vous n'avez pas autorisé l'accès à Internet (Manifest.xml)
  3. Vous n'avez pas utilisé une clé correcte hashkey pour l'application
  4. Vous n'avez pas fourni un ID d'application correct 
54
AnhSirk Dasarp

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.

41
Vinay S Shenoy

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
4
Jraco11

Ajoutez simplement l'autorisation suivante au fichier AndroidManifest.xml

<uses-permission Android:name="Android.permission.SET_DEBUG_APP"/>
1
M.ES

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 =)

1
Penzzz

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;
}
1
vrunoa

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 ...

0
Adrien V