problème de connexion facebook-canOpenURL: Échec pour URL: "fbauth2: / / /" - erreur: "(null)"

quand je clique sur Connexion avec le bouton Facebook, il ouvre le navigateur safari et se ferme immédiatement. Remarqué d'erreur sur la console.

délégué d'Application de la méthode:

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

Langue: Swift2

Facebook SDK: 4.6.0

Parse: 1.8.4

j'ai aussi vérifié .plist a toutes les clés nécessaires. Également j'ai vérifié l'Identificateur de paquet pour les erreurs typographiques. Tout l'air bien. Facebook est active.

de l'aide?

55
demandé sur Matias Jurfest 2015-09-19 05:02:53

9 réponses

j'ai le même avertissement, mais dans les Docs Facebook il y a une réponse.

il s'agit d'un avertissement de Xcode indiquant le canopenurl: appel retourné false. Aussi longtemps que vous avez configuré L'entrée LSApplicationQueriesSchemes dans votre liste comme décrit ci-dessus, vous pouvez ignorer cet avertissement

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

40
répondu Edoardo Benissimo 2015-11-12 12:04:51

"- canOpenURL: échec pour l'URL" avertissement est un hareng rouge et signifie tout simplement le FB app n'est pas installé sur l'appareil/simulateur vous êtes en cours d'exécution sur.

il semble que vous demandiez une portée invalide (alias permission) de"Public". Pouvez-vous inclure votre code qui inclut les permissions que vous demandez? public_profile est probablement ce que vous voulez (et ce à quoi le SDK est par défaut si aucun N'est fourni).

plus important encore, ne pas ajoutez fbauth2 à vos CFBundleURLSchemes car cela cassera les flux de connexion. Comme Himanshu l'a fait remarquer, ces entrées doivent être entrées sous les régimes de Lsapplicationqueriess dans notre liste.

32
répondu Chris Pan 2016-03-29 16:35:54

si vous recompilez avec IOS SDK 9.0, ajoutez ce qui suit à la liste de votre application si vous utilisez une version du SDK v4 de Facebook.6.0 ou plus:

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

pour préparer l'intégration facebook soutenue à iOS 9, passer par Intégration Facebook pour iOS 9 lignes directrices

pour vérifier la version du SDK facebook, utilisez la ligne de code suivante:

   print("SDK version \(FBSDKSettings .sdkVersion())")
4
répondu Himanshu Mahajan 2015-11-20 17:16:24

j'ai manqué l'importation FBSDKCoreKit . Plus tard, il a commencé à travailler sur le simulateur, mais pas sur l'iPhone.

a également remarqué la FAQ suivante sur le site Facebook. Pourquoi je vois des messages de console comme

'canOpenURL: échoué pour URL:" fb...://'

ou ? Il s'agit d'un avertissement Xcode indiquant l'appel canOpenURL: retourné false. Tant que vous avez configuré le LSApplicationQueriesSchemes l'entrée dans votre plist comme décrit ci-dessus, vous pouvez ignorer cet avertissement

concernant ne pas fonctionner sur l'appareil iPhone, s'il vous plaît se référer: Parse API-Facebook login ne fonctionne pas sur l'appareil iPhone

2
répondu sfbayman 2017-05-23 12:26:14

il s'agit d'un avertissement Xcode indiquant le canOpenURL: appel retourné faux. Tant que vous avez configuré le LSApplicationQueriesSchemes entrée dans votre liste comme décrit ci-dessus, vous pouvez ignorer cet avertissement.

allez à ce lien Sélectionnez votre application et configurez votre info.plist

import et ajouter 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)
}
1
répondu ZAFAR007 2017-09-13 18:01:38

Vous avez un supplément de "/" dans l'url "fbauth2:///".

alors vous pouvez voir "error_message=invalide+Scope" dans l'url, vous devriez probablement vérifier les permissions de votre application: https://developers.facebook.com/docs/facebook-login/permissions/v2.4

0
répondu Paul Slm 2015-09-19 04:51:49

le problème est dû à la sécurité de Transport App introduit dans iOS 9.

Il ya deux solutions, les deux traitent de la correction de vos informations.fichier plist

voici un guide http://discoverpioneer.com/blog/2015/09/18/updating-facebook-integration-for-ios-9 /

0
répondu Phil 2015-09-19 16:40:08

vous devez ajouter cette méthode si votre application tourne sur iOS9 ou au-dessus.

- (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]];

}

dans le cas où vous avez besoin d'une version 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)
}
0
répondu Muzammil 2017-09-13 16:17:24

j'ai résolu mon problème. C'était juste la syntaxe de la fonction loginButtonClicked. Le message d'erreur me conduisait dans la mauvaise direction. Voici le code de travail.

@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)
            })
        }

        })
}
0
répondu Rob Schlackman 2017-11-12 13:52:45