web-dev-qa-db-fra.com

Erreur com.facebook.sdk 2 sur iOS

J'ai une application Phonegap qui fonctionne sur iOS et Android. L'application dispose d'une fonction de connexion Facebook qui a fonctionné jusqu'à il y a quelques jours. Quelques-uns de nos bêta-testeurs ont signalé une erreur "L'opération n'a pas pu être terminée com.facebook.sdk error 2". Les appareils de ces testeurs varient: iPhone 5, iPhone 4s, iPod Touch, iOS 5.1.1 et iOS 6.0.

Nous utilisons le dernier SDK Facebook et un plugin de connexion Facebook Phonegap ( https://github.com/davejohnson/phonegap-plugin-facebook-connect/ ).

J'ai fait quelques recherches et trouvé les raisons suivantes pour lesquelles cette erreur pouvait se produire:

  • BundleIdentifier et BundleURLName dans mon fichier info.plist ne correspondent pas à l'ID de bundle sous l'application iOS native dans les paramètres de mon application Facebook.
  • L'application est toujours en mode Sandbox
  • L'application est désactivée dans les paramètres Facebook (paramètres de l'appareil -> Facebook -> Autoriser ces applications à utiliser votre compte).
  • iOS 6.0 ne permet pas de demander des autorisations de lecture et d'écriture en même temps (je ne sais pas si j'ai ce droit).

Voici le cas:

  • La correspondance BundleIdentifier et BundleURLName.
  • L'application n'est pas en mode Sandbox.
  • L'application n'apparaît pas dans "Autoriser ces applications à utiliser votre compte" de chaque utilisateur
  • Les constructeurs du plugin Phonegap auraient corrigé le bogue des autorisations iOS 6.0 ( https://github.com/davejohnson/phonegap-plugin-facebook-connect/pull/216 )

C'est un bug très incohérent (dans mon cas). Je ne peux reproduire l'erreur moi-même que si je désactive l'application dans `` Autoriser ces applications à utiliser votre compte '' (dans mon cas, l'application y est répertoriée), mais je peux facilement corriger l'erreur en autorisant à nouveau l'application. Pour le moment, la plupart des testeurs n'ont plus ce bug, mais l'erreur reste sur un iPod (où l'application n'est pas répertoriée dans 'Autoriser ces applications à utiliser votre compte').

Est-ce que quelqu'un a une idée de pourquoi j'ai ce bug?

32
saltandpepper

Il s'avère: une erreur com.facebook.sdk 2 peut se traduire par un certain nombre de choses. Je recherche une sorte de table de traduction des erreurs du SDK Facebook, mais je ne parviens pas à en trouver une. Dans mon cas: L'erreur 2 de com.facebook.sdk s'est produite parce que la connexion a expiré. Les utilisateurs qui ont obtenu cette erreur avaient une mauvaise connexion réseau/WiFi.

Nous avons implémenté un système de journalisation des erreurs, qui enregistrait les détails de l'erreur chaque fois qu'une erreur se produisait lors de la connexion à Facebook. Dans ces journaux, nous pouvions voir une erreur com.facebook.sdk 2 se produire beaucoup, mais elle était résolue chaque fois que l'utilisateur tentait de se reconnecter après quelques secondes.

Cela peut être dû à mon incapacité à trouver la bonne documentation, mais j'étais et je suis toujours assez frustré par l'imprécision de ces erreurs du SDK. Il y a beaucoup de documentation sur la demande d'autorisation (ce qui peut entraîner l'erreur 2 de com.facebook.sdk), mais apparemment, cette erreur peut être causée par plus de choses. Ce serait bien de voir cela documenté quelque part également.

17
saltandpepper

Cela s'est produit pour une application que j'utilisais. J'ai pu le contourner en accédant aux paramètres de mon iPhone, en sélectionnant Facebook, en appuyant sur mon nom et en cliquant sur "Supprimer le compte".

Ensuite, j'ai pu me connecter avec l'application sans problème.

Je suis retourné aux paramètres | facebook et resoumis mes informations d'identification.

L'application fonctionne toujours bien.

6
seans23

J'ai eu ce bug lorsque j'ai oublié de vérifier l'application iOS native (dans la page des développeurs Facebook) et de taper mon ID de bundle, qui est le même que l'identifiant de bundle dans votre projet Xcode. (y compris le nom de votre projet à la fin.) J'ai également eu le paramètre dans la page des développeurs Facebook qui a activé le mode SandBox. J'ai également désactivé le mode Sandbox pour obtenir ce travail.

5
coolcool1994

Je cherchais depuis longtemps la raison de cette erreur pour autant que je travaille avec l'ancien iOS 5.0 pour une plus grande couverture des appareils. Je viens de recevoir l'erreur 400 via le débogage de la demande facebook. Donc finalement, j'ai compris que la raison était inconnue FBSessionDefaultAudience pour FBSession (testait à 6.0+ et l'api facebook native m'a donné une raison d'erreur). Et quand j'ai utilisé

+ (BOOL)openActiveSessionWithPublishPermissions:(NSArray*)publishPermissions
                                defaultAudience:(FBSessionDefaultAudience)defaultAudience
                                   allowLoginUI:(BOOL)allowLoginUI
                              completionHandler:(FBSessionStateHandler)handler;

cette erreur a finalement disparu.

4
kokoko

ESSAYEZ D'ABORD:

Go to Settings app -> Facebook -> Your App -> Switch it off and back on again.

Cela a fonctionné pour moi et ne m'a pas obligé à supprimer le compte fb et à me reconnecter comme le suggère @ seans23. Si cela n'avait pas fonctionné, j'aurais essayé cela par la suite, mais cela a apparemment réussi à réinitialiser l'État.

1
Kyle Clegg

Pour moi, la raison était que je testais mon application sur simulateur. Je voulais partager une photo et la boîte de dialogue ne s'est pas présentée, j'ai donc branché mon iPhone et tout s'est bien passé après!

1
kalafun

Cette approche a fonctionné pour moi. (iOS 8)

Le contexte:

  • Le bouton "Se connecter" de FB n'a pas ouvert l'application FB ni FB dans Safari
  • SDK FB erroné. 2.
  • "Mon application" n'a pas été affichée dans les paramètres FB pour pouvoir être utilisée.

La solution:

  • Effacer le cache Web Safari (il peut être facultatif)
  • Supprimer l'application Facebook
  • Supprimer Facebook Messenger
  • Installez votre application et connectez-vous

L'idée est de supprimer les deux l'application Facebook et Messenger.

1
Teodor Ciuraru

on avait le même problème. En fait, la raison est vraiment en timeout du côté FB, et surtout si ce timeout se produit alors que la page "FB login" est toujours ouverte, et que l'utilisateur clique sur "annuler". Dans ce cas, l'erreur 2 est toujours recalibrée. Donc, si vous voulez répéter et tester cette situation, cliquez simplement sur le bouton "Annuler" lors de la connexion sur FB.

0
Milos Djikic

Dans mon cas, j'ai créé l'application avec mon compte d'entreprise et j'ai oublié d'ajouter mon profil personnel avec un rôle de développeur. Après avoir compris que tout s'est bien passé.

À votre santé.

0
Felipe