Impossible de trouver les informations du fournisseur pour com.facebook.katana.provider.AtsortingbutionIdProvider

Tout le monde sait ce que signifie cette erreur? Je l’obtiens dans le shell LogCat chaque fois que je me connecte avec mon application Android à Facebook (via un émulateur).

Le code chargé d’autoriser les fonctionnalités:

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.authorize); mPrefs = getPreferences(MODE_PRIVATE); loginPref = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); Ssortingng access_token = mPrefs.getSsortingng("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 Ssortingng[] {"email","user_birthday"}, new DialogListener() { @Override public void onComplete(Bundle values) { SharedPreferences.Editor editor = mPrefs.edit(); editor.putSsortingng("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 se produire pour les raisons suivantes:

  1. Vous n’êtes pas connecté à internet
  2. Vous n’avez pas donné l’autorisation d’accéder à Internet (Manifest.xml)
  3. Vous n’avez pas utilisé un hashkey correct pour l’application
  4. Vous n’avez pas fourni d’identifiant d’application correct

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.

La façon dont fonctionne le SDK Facebook pour Android est que chaque fois que vous avez besoin de faire une demande sur Facebook, le SDK vérifie si l’application Facebook est déjà installée sur votre appareil. S’il est installé, la demande est effectuée via l’application. Si l’application n’est pas installée, elle récupère les données par elle-même.

Si les quatre solutions ne permettaient pas de résoudre le problème, cela pourrait être utile. J’avais cette même erreur lorsque j’ai commencé à utiliser Fragments pour implémenter la connexion Facebook. J’utilisais le fragment standard et non la bibliothèque de support v4 Fragments et après être passé à la bibliothèque de support Fragment, mon problème a disparu. 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

  

Comme l’a dit @ Vinay-S-Shenoy, cela se produit lorsque l’application Facebook n’est pas installée sur le téléphone ou sur le simulateur. Ce que je fais, pour éviter cette erreur, c’est de vérifier si l’application Facebook installée avant d’appeler la méthode facebook.authorize, au cas où l’application facebook ne serait pas installée, j’alerte ce message à l’utilisateur.

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

N’oubliez pas de remplacer onActivityResult et de vérifier s’il a été appelé (par exemple, si vous utilisez des fragments)

PS (peut-être que ce sera utile pour les autres, j’ai été confronté à ce problème quand j’utilisais parse facebook login =)

Pour moi (mais je travaille avec ionic) c’était à cause d’une erreur d’image manquée / modèle, avant le lancement:

 ionic cordova build android 

Peut-être que ça peut aider les autres …

 btnFb_photo_post.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // postPhotoToWall(facebook.getAccessToken()); facebook.authorize(MyFBTestActivity.this, new Ssortingng[] { "publish_stream" }, new DialogListener() { @Override public void onFacebookError(FacebookError e) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show(); } @Override public void onError(DialogError dialogError) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), dialogError.getMessage(), Toast.LENGTH_LONG).show(); } @Override public void onComplete(Bundle values) { postToWall(values.getSsortingng(Facebook.TOKEN)); } private void postToWall(Ssortingng accessToken) { // Toast.makeText(getApplicationContext(), // "trying", Toast.LENGTH_LONG).show(); byte[] data = null; Bitmap bi = BitmapFactory.decodeResource( getResources(), R.drawable.ic_launcher ); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bi.compress(Bitmap.CompressFormat.JPEG, 100, baos); data = baos.toByteArray(); Bundle params = new Bundle(); // if (facebook.getAccessToken() != null) params.putSsortingng(Facebook.TOKEN, facebook.getAccessToken() ); params.putSsortingng("method", "photos.upload"); params.putSsortingng("caption", "www.samplelink.com"); // params.putSsortingng("message", // "www.google.com"); params.putByteArray("picture", data); AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook); mAsyncRunner.request(null, params, "POST", new SampleUploadListener(), null); } @Override public void onCancel() { // TODO Auto-generated method stub } } ); } }); 

J’utilise ce code pour télécharger l’image sur le mur FB. essayer une fois