unity react fbsdkloginkit fbsdkcorekit ios swift facebook-ios-sdk ios10

react - Cómo usar Facebook iOS SDK en iOS 10



install facebook sdk ios (6)

Estoy tratando de usar Xcode 8 para construir una aplicación con inicio de sesión de Facebook usando Swift 3. Cuando cambio de nuevo iOS Simulator 9.3, funciona. En iOS 10, recibo este error:

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

y

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

¿Alguien tiene solución para esto?

Nota 1 :

Después de la depuración, este problema es que FBSDK no puede actualizar expect_challange . La función SecItemUpdate dentro de security.framework no funciona. Este es un problema de iOS 10


El mismo problema estaba en mi aplicación, verifiqué muchas soluciones pero no funcionó para mí. Solucioné este problema usando el siguiente método.

Vaya a este Link Seleccione su aplicación y configure su info.plist

import y agrega este código en tu 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) }


En mi caso, el problema era Google Analytics. Por defecto, parece que está agregando su propio controlador de vista en la parte superior del controlador de vista de la aplicación. Establecer "FirebaseAppDelegateProxyEnabled" en "NO" en {Su aplicación} -Info.plist resolvió el problema.


En mi caso, la solución fue *:

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 }

* Según lo recomendado por @MoridinBG en la página Github de Facebook SDK


Este error también puede ser causado si está utilizando FBSDKCoreKit o FBSDKLoginKit versión 4.39.0. Hubo un error en esta versión del SDK. Actualice a 4.39.1 o superior para solucionarlo. Detalles here

Como nota al margen, otros usuarios mencionaron que este error se ve si no tiene Facebook instalado en el simulador. Eso es cierto, pero se supone que el SDK recurrirá automáticamente al método de inicio de sesión web cuando la aplicación no esté instalada. Si eso no sucede, puede deberse a otro problema, como valores faltantes / mal configurados en su Info.plist (consulte LSApplicationQueriesSchemes) o métodos faltantes en su AppDelegate.


La razón principal por la que obtienes el siguiente error,

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

es que su simulador de iOS no tiene instalada la aplicación de Facebook. Hasta que instale la aplicación en su simulador de iOS, continuará recibiendo el error. Intente ejecutar su aplicación iOS en un dispositivo iOS provisto con Facebook instalado y no volverá a ver el mensaje de error. ¡Espero que esto ayude!


El error OSStatus -10814 se produce cuando canOpenURL: no puede encontrar ninguna aplicación que pueda abrir esta URL (en realidad, Facebook intenta encontrar su aplicación llamando a canOpenURL: con el argumento "fbauth2: /"). La impresión ocurre dentro de la función, por lo que no puede hacer nada con eso. Pero si ejecuta su aplicación en el dispositivo con la aplicación de Facebook instalada, no verá este error.

El error 308 se produce debido a la situación, cuando el valor, almacenado en el llavero no es igual al valor, que se almacena en los parámetros de finalización de Facebook (para obtener más información, puede consultar -[FBSDKLoginManager completeAuthentication:expectChallenge:] ).

Ocurre porque Apple cambió la forma de trabajar con el llavero en iOS 10. Para solucionar este problema, simplemente debe ir a Objetivos-> Capacidades y habilitar el intercambio de llavero (permite el acceso al llavero para su aplicación):

Si está utilizando Xamarin (lea este link para obtener más información, gracias @dynamokaj):

Solo asegúrese de habilitar el acceso al llavero en Derechos y seleccione también los derechos para las compilaciones de Simulador (Depuración). Por defecto esto no está configurado.