ios facebook swift facebook-graph-api parse.com parse-platform

ios - problema de inicio de sesión de Facebook-canOpenURL: error para URL: "fbauth2:///"-error: "(nulo)"



swift facebook-graph-api (9)

Esta es una advertencia de Xcode que indica que canOpenURL: call devuelve false. Siempre que haya configurado la entrada LSApplicationQueriesSchemes en su plist como se describe anteriormente, puede ignorar esta advertencia.

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

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

Cuando hago clic en iniciar sesión con el botón de Facebook, se abre el navegador safari y se cierra de inmediato. Error notado en la consola.

Método delegado de la aplicación:

func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool { print("###### URL : ") print(url) print("###### App : ") print(app) print(options["UIApplicationOpenURLOptionsSourceApplicationKey"]) return FBSDKApplicationDelegate.sharedInstance().application(app, openURL: url, sourceApplication: options["UIApplicationOpenURLOptionsSourceApplicationKey"] as! String, annotation: nil) }

2015-09-18 18:37:51.410 [21036:5050465] -canOpenURL: failed for URL: "fbauth2:///" - error: "(null)" 2015-09-18 18:37:51.417[21036:5050465] -canOpenURL: failed for URL: "fbauth2:///" - error: "(null)" ###### URL : fb4554284912963222://authorize/?error_code=100&error_message=Invalid+Scope%3A+public&state=%7B%22challenge%22%3A%222ZmK6R5F05d%252F060TkCqj8SjPLjc%253D%22%2C%220_auth_logger_id%22%3A%223C79F2C8-61B9-470E-AE1B-E1C68435DB83%22%2C%22com.facebook.sdk_client_state%22%3Atrue%2C%223_method%22%3A%22sfvc_auth%22%7D&e2e=%7B%22init%22%3A145973.000512302%7D#_=_ ###### App : Optional(com.apple.SafariViewService) nil ###### err: Optional(Error Domain=com.facebook.sdk.core Code=8 "(null)" UserInfo={com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorCode=100, com.facebook.sdk:FBSDKErrorDeveloperMessageKey=Invalid Scope: public, com.facebook.sdk:FBSDKGraphRequestErrorCategoryKey=0})

IDE: xcode 7
Idioma: Swift2
SDK de Facebook: 4.6.0
Parse: 1.8.4

También he verificado que .plist tiene todas las claves necesarias. También se verificó el identificador de paquete para errores tipográficos. Todos se ven bien. Facebook está activo

¿Alguna ayuda?


Debe agregar este método si su aplicación se ejecuta en iOS9 o superior.

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options { return [[FBSDKApplicationDelegate sharedInstance] application:app openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];

}

En caso de que necesite una versión Swift:

@available(iOS 9.0, *) func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { return SDKApplicationDelegate.shared.application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: options[UIApplicationOpenURLOptionsKey.annotation] as Any) }



La advertencia "-canOpenURL: error de URL" es una pista falsa y simplemente significa que la aplicación FB no está instalada en el dispositivo / simulador en el que se está ejecutando.

Parece que está solicitando un alcance no válido (también conocido como permiso) de "Público". ¿Puede incluir su código que incluye los permisos que solicita? public_profile es probablemente lo que desea (y el valor predeterminado del SDK si no se proporciona ninguno).

Más importante aún, NO agregue fbauth2 a sus CFBundleURLSchemes ya que eso interrumpirá los flujos de inicio de sesión. Como señaló Himanshu, esas entradas deben ingresarse en LSApplicationQueriesSchemes en nuestra lista.


Me di cuenta de mi problema. Era solo la sintaxis en la función loginButtonClicked. El mensaje de error me estaba llevando por el camino equivocado. Aquí está el código de trabajo.

@objc func loginButtonClicked() { self.login = FBSDKLoginManager() self.login.logIn(withReadPermissions: ["public_profile"], from: self, handler: {(result, error) -> Void in if error != nil { print("Process error") } else if (result?.isCancelled)! { print("Cancelled") } else { print("Logged in") DispatchQueue.main.async(execute: { let viewController:UIViewController = self.storyboard?.instantiateViewController(withIdentifier: "UITabBarController") as! UITabBarController self.present(viewController, animated: true, completion: nil) }) } }) }


Me he perdido la importación de FBSDKCoreKit . Más tarde comenzó a trabajar en el simulador pero no en el dispositivo iPhone.

También noté las siguientes preguntas frecuentes en el sitio de Facebook. ¿Por qué veo mensajes de consola como

''canOpenURL: falló para URL: "fb ...: //''

o Esta es una advertencia de Xcode que indica canOpenURL: llamada devuelta es falsa. Mientras haya configurado la entrada LSApplicationQueriesSchemes en su plist como se describe anteriormente, puede ignorar esta advertencia

Con respecto a no funcionar en el dispositivo iPhone, consulte: Parse API: el inicio de sesión de Facebook no funciona en el dispositivo iPhone


Si está volviendo a compilar con iOS SDK 9.0, agregue lo siguiente a la lista de aplicaciones si está usando una versión de Facebook SDK v4.6.0 o superior:

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

Para preparar la integración de Facebook compatible con iOS 9, consulte las https://developers.facebook.com/docs/ios/ios9

Para verificar la versión del SDK de Facebook, use la siguiente línea de código:

print("SDK version /(FBSDKSettings .sdkVersion())")


Tengo la misma advertencia, pero en Facebook Docs hay una respuesta.

Esta es una advertencia de Xcode que indica que canOpenURL: call devuelve false. Mientras haya configurado la entrada LSApplicationQueriesSchemes en su plist como se describe anteriormente, puede ignorar esta advertencia

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