parse.com facebook-sdk-4.0 swift2

parse.com - swift 2 parse facebookSDK ios9



facebook-sdk-4.0 swift2 (4)

Estoy intentando iniciar sesión en un usuario a través de Facebook. En la versión anterior de swift 1.2 todo funcionó a la perfección, pero después de la migración parece que no puedo iniciar sesión a través de mi cuenta de FB. Todavía recibo el error que dice:

-canOpenURL: error en la URL: "fbauth: // authorize /? client_id = ... error:" Esta aplicación no puede consultar el esquema fbauth "

¿Puedes ayudarme con eso?


1] Autenticación en Developer.facebook y generar ID de Facebook

2] Establecer código de bits: no desde configuración de compilación

3] Configurar el archivo Plist

<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLSchemes</key> <array> <string>fb460481580805052</string> </array> </dict> </array> <key>FacebookAppID</key> <string>460481580805052</string> <key>LSRequiresIPhoneOS</key> <true/> <key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>akamaihd.net</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <false/> </dict> <key>facebook.com</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <false/> </dict> <key>fbcdn.net</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <false/> </dict> </dict> </dict> <key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fbapi20130214</string> <string>fbapi20130410</string> <string>fbapi20130702</string> <string>fbapi20131010</string> <string>fbapi20131219</string> <string>fbapi20140410</string> <string>fbapi20140116</string> <string>fbapi20150313</string> <string>fbapi20150629</string> <string>fbauth</string> <string>fbauth2 </string> <string>fb-messenger-api20140430</string> <string>fb-messenger-platform-20150128</string> <string>fb-messenger-platform-20150218</string> <string>fb-messenger-platform-20150305</string> </array>

4] Descargar 4 Sdk Framework como

=>Bolts.framework =>FBSDKCoreKit.framework =>FBSDKLoginKit.framework =>FBSDKShareKit.framework


En el video WWDC 2015 "Privacidad y su aplicación", agregue lo siguiente a su archivo info.plist:

<key>LSApplicationQueriesSchemes</key> <array> <string>fbauth</string> </array>


Siga este enlace para ver las actualizaciones recomendadas de Facebook para iOS 9 https://developers.facebook.com/docs/ios/ios9

Para arreglar este error específico

-canOpenURL: failed for URL: "fbauth://authorize/?client_id=... error: "This app is not allowed to query for scheme fbauth"

Para Facebook SDK versión 4.6+ vaya a su archivo info.plist y agregue lo siguiente:

<key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fb-messenger-api</string> <string>fbauth2</string> <string>fbshareextension</string> </array>

Para la versión 4.5 o anterior:

<key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fbapi20130214</string> <string>fbapi20130410</string> <string>fbapi20130702</string> <string>fbapi20131010</string> <string>fbapi20131219</string> <string>fbapi20140410</string> <string>fbapi20140116</string> <string>fbapi20150313</string> <string>fbapi20150629</string> <string>fbauth</string> <string>fbauth2</string> <string>fb-messenger-api20140430</string> </array>


Sugiero seguir las instrucciones de Facebook para preparar una aplicación para iOS 9: https://developers.facebook.com/docs/ios/ios9

  1. Descargue el último SDK de Facebook para iOS

Descargue la versión adecuada del SDK de Facebook para su aplicación.

v4.x - Recomendado. v3.24.0 - Solo si aún no ha migrado a la versión 4.x del SDK. 2. Lista blanca de servidores de Facebook para solicitudes de red

Si compila su aplicación con iOS SDK 9.0, se verá afectado por App Transport Security. Actualmente, deberá incluir en la lista blanca los dominios de Facebook en su aplicación agregando lo siguiente a la lista de su aplicación:

<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>facebook.com</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSExceptionRequiresForwardSecrecy</key> <false/> </dict> <key>fbcdn.net</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSExceptionRequiresForwardSecrecy</key> <false/> </dict> <key>akamaihd.net</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSExceptionRequiresForwardSecrecy</key> <false/> </dict> </dict> </dict>

o encontrará errores como:

NSUnderlyingError=0x7f88f9436eb0 {Error Domain=kCFErrorDomainCFNetwork Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made." UserInfo={NSErrorFailingURLStringKey= https://graph.facebook.com/v2.4, NSLocalizedRecoverySuggestion= Would you like to connect to the server anyway?, _kCFNetworkCFStreamSSLErrorOriginalValue=-9802, kCFStreamPropertySSLPeerCertificates=<CFArray 0x7f88f9536e00 [0x10719f7c0]>{type = immutable, count = 2, values = ( 0 : <cert(0x7f88f963f840) s: *.facebook.com (http://facebook.com/) i: DigiCert High Assurance CA-3> 1 : <cert(0x7f88f96444c0) s: DigiCert High Assurance CA-3 i: DigiCert High Assurance EV Root CA> )}, _kCFStreamPropertySSLClientCertificateState=0, kCFStreamPropertySSLPeerTrust=<SecTrustRef: 0x7f88f9644d10>, NSLocalizedDescription=An SSL error has occurred and a secure connection to the server cannot be made.,_kCFStreamErrorDomainKey=3, NSErrorFailingURLKey=https://graph.facebook.com/v2.4, _kCFStreamErrorCodeKey=-9802}}

  1. Lista blanca de aplicaciones de Facebook

Si utiliza cualquiera de los cuadros de diálogo de Facebook (por ejemplo, Iniciar sesión, Compartir, Invitaciones a la aplicación, etc.) que pueden realizar un cambio de aplicación a las aplicaciones de Facebook, deberá actualizar el plist de su aplicación para manejar los cambios en canOpenURL descritos en https://developer.apple.com/videos/wwdc/2015/?id=703

Si está recompilando con iOS SDK 9.0, agregue lo siguiente a la lista de su aplicación si está usando una versión del SDK v4.5 o anterior:

<key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fbapi20130214</string> <string>fbapi20130410</string> <string>fbapi20130702</string> <string>fbapi20131010</string> <string>fbapi20131219</string> <string>fbapi20140410</string> <string>fbapi20140116</string> <string>fbapi20150313</string> <string>fbapi20150629</string> <string>fbauth</string> <string>fbauth2</string> <string>fb-messenger-api20140430</string> </array>

Si está utilizando FBSDKMessengerShareKit de versiones anteriores a la versión v4.6, también agregue

<string>fb-messenger-platform-20150128</string> <string>fb-messenger-platform-20150218</string> <string>fb-messenger-platform-20150305</string>

Si está utilizando v4.6.0 del SDK, solo necesita agregar:

<key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fb-messenger-api</string> <string>fbauth2</string> <string>fbshareextension</string> </array>

Esto permitirá que la integración de FacebookSDK identifique correctamente las aplicaciones de Facebook instaladas para realizar un cambio de aplicación. Si no está recompilando con iOS SDK 9.0, su aplicación está limitada a 50 esquemas distintos (las llamadas a canOpenURL luego devuelven NO).