使用Swift SDK处理Facebook登录的开放URL

Dan*_*Que 3 facebook ios swift

我正在使用新的Facebook Swift SDK而不是Objective C SDK.

此前,openURLAppDelegate.swift必须执行.但是,Facebook的Swift教程并没有涉及这一部分.

记录以下内容:

Implementation of application:openURL:sourceApplication:annotation: not found. Please add the handler into your App Delegate. Class: Shoppie.AppDelegate

但我的实现不起作用:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        return GIDSignIn.sharedInstance().handle(url as URL!, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String, annotation: nil)
    if (url.scheme?.hasPrefix("fb"))! {
        return FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String!, annotation: nil)
    } else {
        return GIDSignIn.sharedInstance().handle(url as URL!, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String, annotation: nil)
    }
    return false
}
Run Code Online (Sandbox Code Playgroud)

由于:

Use of unresolved identifier 'FBSDKApplicationDelegate'
Run Code Online (Sandbox Code Playgroud)

我通过添加以下内容来安装Swift SDK Podfile:

pod 'FacebookCore'
pod 'FacebookLogin'
pod 'FacebookShare'
Run Code Online (Sandbox Code Playgroud)

跑步pod install.

我找不到更新的代码应该是什么.

apo*_*rat 7

他们的文档有点缺乏,但他们确实在他们的github存储库中提供了一个很好的示例应用程序.请参阅https://github.com/facebook/facebook-sdk-swift/blob/master/Samples/Catalog/Sources/AppDelegate.swift

这是我用来将SDK插入我的应用程序的代码(Swift 3):

import FacebookCore

@UIApplicationMain

class AppDelegate: UIResponder, UIApplicationDelegate {

  func application(_ application: UIApplication,
                   didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    SDKApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)

    return true
  }

  func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {

    if let _ = Bundle.main.object(forInfoDictionaryKey: "FacebookAppID") as? String {
      return SDKApplicationDelegate.shared.application(application,
                                                       open: url,
                                                       sourceApplication: sourceApplication,
                                                       annotation: annotation)
    }

      return false
    }

  @available(iOS 9.0, *)
  func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {

    if let _ = Bundle.main.object(forInfoDictionaryKey: "FacebookAppID") as? String {
      return SDKApplicationDelegate.shared.application(application, open: url, options: options)
    }

      return false
  }
}
Run Code Online (Sandbox Code Playgroud)

仅供参考 - facebook swift库基本上只是其标准objective-c库的包装器.