it-swarm.com.de

facebook Login Problem - canOpenURL: Fehler bei URL: "fbauth2: ///" - Fehler: "(null)"

Wenn ich auf "Anmelden" mit dem Facebook-Button klicke, wird der Safari-Browser geöffnet und sofort geschlossen. Auf der Konsole wurde ein Fehler angezeigt.

App-Delegat-Methode:

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: Fehler bei URL: "fbauth2: ///" - Fehler: "(Null)" 

 2015-09- 18 18: 37: 51.417 [21036: 5050465] -canOpenURL: Fehler bei URL: "fbauth2: ///" - Fehler: "(Null)" 

 ###### URL: 
 . .__ fb4554284912963222: // autorisieren/error_code = 100 & error_message = Ungültige + 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 22init1in145973502322322 _

 ###### App: 


 Optional (com.Apple.SafariViewService) 
 Nil 

 ###### err: 

 Optional (Fehlerdomäne = com.facebook.sdk.core Code = 8 "(null)" UserInfo = {com.facebook.sdk: FBSDKGraphRequestErrorGraphErrorCode = 100, com.facebook.sdk: FBSDKErrorDeveloperMessageKey = Ungültiger Bereich: public, com.facebook.sdk: FBSDKGraphRequestErrorCategoryKey = 0}) 

IDE: xcode 7
Sprache: Swift2
Facebook SDK: 4.6.0
Parse: 1.8.4

Ich habe auch überprüft, dass .plist alle Schlüssel hat, die erforderlich sind . Außerdem wurde die Bundle-ID für Tippfehler überprüft. Alle sehen gut aus .. Facebook ist aktiv.

Irgendeine Hilfe?

56
sfbayman

Ich habe dieselbe Warnung, aber in Facebook Docs gibt es eine Antwort.

Dies ist eine Xcode-Warnung, die darauf hinweist, dass der Aufruf canOpenURL: false zurückgegeben wurde. Solange Sie den Eintrag LSApplicationQueriesSchemes in Ihrer Plist wie oben beschrieben konfiguriert haben, können Sie diese Warnung ignorieren

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

41

Die Warnung "-canOpenURL: Fehler für URL" ist ein roter Hering und bedeutet einfach, dass die FB-App nicht auf dem Gerät/Simulator installiert ist, auf dem Sie ausgeführt werden.

Es sieht so aus, als ob Sie einen ungültigen Bereich ("Erlaubnis") für "Public" anfordern. Können Sie Ihren Code einschließen, der die von Ihnen gewünschten Berechtigungen enthält? public_profile ist wahrscheinlich das, was Sie wollen (und was das SDK standardmäßig ist, wenn keines bereitgestellt wird).

Noch wichtiger ist, fügen Sie NOT Ihren CFBundleURLSchemes mit fbauth2 hinzu, da dies die Anmeldungsabläufe unterbricht. Wie Himanshu darauf hingewiesen hat, sollten diese Einträge in unserer Liste unter LSApplicationQueriesSchemes eingetragen werden.

33
Chris Pan

Wenn Sie das iOS SDK 9.0 erneut kompilieren, fügen Sie der Anwendungsliste Ihrer Anwendung Folgendes hinzu, wenn Sie eine Version des Facebook SDK Version 4.6.0 oder höher verwenden:

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

Um die Facebook-Integration vorzubereiten, die für iOS 9 unterstützt wird, gehen Sie durch Richtlinien von Facebook Integraion für iOS 9

Um die Version des Facebook SDK zu überprüfen, verwenden Sie die folgende Codezeile:

   print("SDK version \(FBSDKSettings .sdkVersion())")
4

Ich habe den Import von FBSDKCoreKit verpasst. Später arbeitete es am Simulator, aber nicht am iPhone-Gerät. 

Beachten Sie auch die folgenden FAQ auf der Facebook-Site. Warum sehe ich Konsolenmeldungen wie 

"canOpenURL: Fehler bei URL:" fb ...: // " 

oder ? Dies ist eine Xcode-Warnung, die darauf hinweist, dass der canOpenURL:-Aufruf false zurückgegeben hat. Solange Sie den Eintrag LSApplicationQueriesSchemes in Ihrer plist wie oben beschrieben konfiguriert haben, können Sie diese Warnung ignorieren

Bezüglich des Fehlens auf dem iPhone-Gerät siehe: Parse API - Facebook-Login funktioniert nicht auf dem iPhone-Gerät

2
sfbayman

Dies ist eine Xcode-Warnung, die darauf hinweist, dass der Aufruf von canOpenURL: .__ zurückgegeben wurde. falsch. Solange Sie LSApplicationQueriesSchemes.__ konfiguriert haben. Wenn Sie den Eintrag in Ihrer Plist wie oben beschrieben eingeben, können Sie diese Warnung ignorieren.

Gehen Sie zu diesem Link Wählen Sie Ihre App aus und konfigurieren Sie Ihren info.plist

import Und fügen Sie diesen Code in Ihren AppDelegate ein.

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
ZAFAR007

Sie haben ein zusätzliches "/" in Ihrer URL "fbauth2: ///".

Dann sehen Sie "error_message = Invalid + Scope" in der URL. Sie sollten wahrscheinlich die Berechtigungen Ihrer App überprüfen: https://developers.facebook.com/docs/facebook-login/permissions/v2. 4

0
Paul Slm

Sie müssen diese Methode hinzufügen, wenn Ihre App unter iOS9 oder höher ausgeführt wird.

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

}

Falls Sie eine Swift-Version benötigen:

@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
Muzammil

Ich habe mein Problem herausgefunden. Es war nur die Syntax in der Funktion loginButtonClicked. Die Fehlermeldung führte mich auf den falschen Weg. Hier ist der Arbeitscode.

@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
Rob Schlackman

Das Problem ist auf App Transport Security zurückzuführen, die in iOS 9 eingeführt wurde.

Es gibt zwei Lösungen, die sich beide mit dem Beheben Ihrer info.plist-Datei befassen

Hier ist ein Führer http://discoverpioneer.com/blog/2015/09/18/updating-facebook-integration-for-ios-9/

0
Phil