web-dev-qa-db-fra.com

Comment utiliser Facebook iOS SDK sur iOS 10

J'essaie d'utiliser Xcode 8 pour créer une application avec une connexion Facebook en utilisant Swift 3. Lorsque je reviens sur iOS Simulator 9.3, cela fonctionne. Dans iOS 10, je reçois cette erreur: 

""fbauth2:/" The operation couldn’t be completed. (OSStatus error -10814.)"

et

Optional(Error Domain=com.facebook.sdk.login Code=308 "(null)")

Quelqu'un a une solution pour cela?

Note 1 :

Après le débogage, ce problème est FBSDK ne peut pas mettre à jour expect_challange. La fonction SecItemUpdate dans security.framework ne fonctionne pas. Ceci est un problème de IOS 10

102
trquoccuong

Error OSStatus -10814 se produit lorsque canOpenURL:ne trouve aucune application qui peut ouvrir cette URL (en fait, Facebook essaie de trouver leur application en appelant canOpenURL: avec l'argument "fbauth2: /"). L'impression se passe à l'intérieur de la fonction, vous ne pouvez donc rien faire avec cela . Mais si vous exécutez votre application sur un périphérique avec l'application Facebook installée, vous ne verrez pas cette erreur.

Erreur 308 se produit en raison de la situation, lorsque la valeur stockée dans le trousseau n'est pas égale à la valeur, qui est stockée dans les paramètres d'achèvement de facebook (pour plus d'informations, vous pouvez vérifier -[FBSDKLoginManager completeAuthentication:expectChallenge:]).

Cela arrive parce qu'Apple a changé la façon de travailler avec le trousseau dans iOS 10. Pour résoudre ce problème, vous devez simplement aller à Cibles-> Fonctionnalités et activer le partage de trousseau (cela permet d'accéder au trousseau de votre application): image

Si vous utilisez Xamarin (lisez ceci lien pour plus d'informations, merci @dynamokaj):

Assurez-vous simplement d’activer l’accès au trousseau dans Droits et Droits sélectionnez également les droits pour les générations de simulateur (débogage). Par défaut ce n'est pas réglé.

198
Roman Ermolov

Même problème était dans mon application, j'ai vérifié de nombreuses solutions, mais ne fonctionne pas pour moi. J'ai résolu ce problème en utilisant la méthode ci-dessous.

Allez à ceci Lien Sélectionnez votre application et configurez votre info.plist

import et ajoutez ce code dans votre AppDelegate

import FBSDKCoreKit
import FBSDKLoginKit

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    return FBSDKApplicationDelegate.sharedInstance().application(app, open: url, options: options)
}
5
ZAFAR007

La principale raison pour laquelle vous obtenez l'erreur suivante,

canOpenURL: failed for URL: "fbauth2:/" - error: "The operation couldn’t be completed. (OSStatus error -10814.)

est que l'application Facebook n'est pas installée sur votre simulateur iOS. Jusqu'à ce que vous installiez l'application sur votre simulateur iOS, vous continuerez à obtenir l'erreur. Essayez d’exécuter votre application iOS sur un périphérique iOS provisionné avec Facebook installé et vous ne verrez plus le message d’erreur. J'espère que cela t'aides!

4
umarqattan

Dans mon cas, le correctif était *:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 

  // First, handle Facebook URL open request
  if let fbSDKAppId = FBSDKSettings.appID(), url.scheme!.hasPrefix("fb\(fbSDKAppId)"), url.Host == "authorize" { 
    let shouldOpen: Bool = FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String!, annotation: options[UIApplicationOpenURLOptionsKey.annotation]) 
    return shouldOpen 
  } 

  // After it, handle any other response (e.g. deep links)
  handlerOtherUrls(url: url) 
  return true 
}

* Tel que recommandé par @MoridinBG à Page Github de Facebook SDK

3
Ruben Marin

Cette erreur peut également être provoquée si vous utilisez FBSDKCoreKit ou FBSDKLoginKit version 4.39.0. Il y avait un bogue dans cette version du SDK. Passez à la version 4.39.1 ou supérieure pour y remédier. Détails ici .

En guise de remarque, d'autres utilisateurs ont mentionné que cette erreur se produisait si Facebook n'était pas installé sur le simulateur. Cela est vrai, mais le SDK est supposé revenir automatiquement à la méthode de connexion Web lorsque l'application n'est pas installée. Si cela ne se produit pas, cela peut être dû à un autre problème, tel que des valeurs manquantes/mal configurées dans votre Info.plist (consultez LSApplicationQueriesSchemes) ou des méthodes manquantes sur votre AppDelegate.

0
Code Commander