web-dev-qa-db-fra.com

iOS - Erreur de connexion Facebook - Erreur inconnue lors de la création de l'URL (erreur com.facebook.sdk.core 3)

J'utilise la connexion Facebook pour mon application iOS en cours de développement pour iOS 8 et les versions ultérieures. (Le dernier SDK Facebook est utilisé)

J'ai suivi toutes les étapes essentielles décrites par le guide officiel de Facebook. Cependant, lorsque je clique sur le bouton de connexion, l'erreur suivante s'affiche:

Erreur inconnue lors de la création de l'URL (erreur com.facebook.sdk.core 3)

J'ai vérifié, pour regarder ce que j'avais peut-être mal fait, mais tout semble conforme au guide et je suis coincé ici depuis un jour.

Code pour le délégué de connexion FB:

class FBLoginDelegate: NSObject,  FBSDKLoginButtonDelegate  {


func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!){
    if(error == nil){
        print("Logged In from Btn")
    }else{
        print("Error: \(error.localizedDescription)") //Here it gives the error 
    }

}
}

Code pour le bouton de connexion FB: 

      var fbLoginBtnDelegate = FBLoginDelegate()
    let fbBtnWidth = self.view.bounds.width - (self.fbContainerLeftConstraint.constant + self.fbContainerRightConstraint.constant)
    let fbLoginButton = FBSDKLoginButton(frame: CGRectMake(0,0,fbBtnWidth,self.fbButtonContainer.bounds.size.height))

    self.fbButtonContainer.addSubview(fbLoginButton)
    fbLoginButton.readPermissions = ["public_profile", "user_friends", "email", "user_birthday"]
    fbLoginButton.delegate = fbLoginBtnDelegate
20
Muhammad Sadiq Alvi

Si vous avez mis à niveau le SDK Facebook iOS vers la version 4.39.0, un bogue est à l'origine de cette erreur. La rétrogradation à 4.38.1 vous aidera à résoudre ce problème. Assurez-vous de déclasser FBSDKCoreKit et FBSDKLoginKit.

pod 'FBSDKCoreKit', '~> 4.38.0'
pod 'FBSDKLoginKit', '~> 4.38.0'

Assurez-vous de nettoyer le dossier de construction et de reconstruire le SDK.

update: ce bogue a été corrigé dans la version 4.39.1 du SDK. https://developers.facebook.com/docs/ios/change-log-4x/

63
David Liu

Il s'agit d'un bogue du SDK de Facebook dans la version 4.39.0 qui est à l'origine de cette erreur. Afin de résoudre ce problème, il suffit de rétrograder CoreKit et LoginKit vers 4.38.0, d'effacer les données dérivées ainsi que le dossier de construction propre (CMD + OPTION + SHIFT + K). Considérant que 4.38.1 fonctionne également bien. 

pod 'FBSDKCoreKit', '~> 4.38.0'
pod 'FBSDKLoginKit', '~> 4.38.0'

Si vous utilisez FacebookCore et FacebookLogin, procédez comme suit.

pod 'FacebookCore'
pod 'FacebookLogin'
pod 'FBSDKCoreKit', '~> 4.38.0'
pod 'FBSDKLoginKit', '~> 4.38.0'
7
shanezzar

Pour moi, le problème était que l'ID de l'application Facebook indiqué dans CFBundleURLTypes> CFBundleURLSchemes dans Info.plist avait été mal énoncé.

J'importais l'ID d'application à partir d'un fichier .xcconfig afin que sa valeur sous-jacente change selon que j'utilise un modèle Debug ou Release. Toutefois, lorsque j’ai imprimé le fichier plist, il y avait des guillemets inutiles autour de l’ID d’application lorsqu’ils étaient lus à partir des fichiers xcconfig. Par exemple, où le schéma d'URL devrait être fb012345678, il s'agissait de fb"012345678".

J'ai essayé de coder correctement les identifiants d'application dans le Info.plist, comme indiqué dans le guide Facebook, et la FBSDKLoginButton vient de fonctionner. Safari est venu pour afficher l'écran de connexion Facebook. Cependant, vous n'avez pas à coder les identifiants en dur, assurez-vous simplement qu'ils sont correctement remplacés dans Info.plist.

2
Matthew Quiros

Dans le terminal et accédez au dossier du projet, utilisez 

pod update

mettre à jour à la version actuelle 4.39.1

1
Ionz

Je suivais les instructions react-native-fbsdk dans lesquelles vous êtes censé copier des fichiers/dossiers Framework dans le projet. Ainsi, l’approche Cocoapod donnée ci-dessus ne m’a pas fonctionné.

Ce que j'ai fait est de supprimer les fichiers Framework existants du projet (cliquez avec le bouton droit de la souris sur les éléments Framework -> Supprimer -> Tout supprimer), puis ajoutez à nouveau les versions précédentes des cadres en les téléchargeant à partir de:

https://developers.facebook.com/docs/ios/downloads/

0
Darko Maksimovic

Je devais faire deux choses pour que cela fonctionne.

1. Déclassement des pods à

pod 'FBSDKCoreKit', '~> 4.38.0'
pod 'FBSDKLoginKit', '~> 4.38.0'

2. Supprimez -ObjC des autres indicateurs de l'éditeur de liens

Bien que cela ait été suggéré dans le portail des développeurs facebook. Cela générait l'erreur ci-dessous:

com.facebook.sdk: FBSDKErrorDeveloperMessageKey = Erreur inconnue lors de la création de l'URL.

J'espère que cela t'aides.

0
shakil080