使用 Facebook 应用程序时 Facebook 登录回调不起作用 - Swift

Ner*_*hic 5 facebook ios swift

一年多来,我在应用商店上有一个功能完善的应用程序,其中包含 Facebook 注册功能,并且一切正常,没有任何问题。然而,几天前,我收到了一些用户的抱怨,他们说 Facebook 登录导致应用卡在登录屏幕上。我已经调查了这种行为,似乎当您使用 Facebook 应用程序进行身份验证时,单击登录按钮后来自 Facebook 的回调不起作用。通过 Safari 工作。我已经将我的 Cocoapod 库更新到最新版本,在我的 AppDelegate 中,我有以下内容:

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

     FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions) 
    return true
}


func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    return FBSDKApplicationDelegate.sharedInstance().application(app, open: url as URL!, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String, annotation: options[UIApplicationOpenURLOptionsKey.annotation])
}

func applicationDidBecomeActive(_ application: UIApplication) {
    FBSDKAppEvents.activateApp()
}
Run Code Online (Sandbox Code Playgroud)

我所有的 Plist 文件都井井有条,Facebook 没有暂停我的应用程序或任何类似的东西,当我尝试使用 Safari 登录时,它再次起作用。iOS 版本是 11,我使用的是 Swift 3。

a.m*_*sri 2

我认为您已经通过Facebook登录,这可能会导致一些问题最好使用pod使用Facebook sdk的最新更新或下载facebook框架最新版本

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

请参阅 facebook LoginBehavior

基于 facebook sdk 的上次更新它应该以这种方式显示

在此输入图像描述

并检查 plist 信息与此相同

<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>fb{your-app-id}</string>
    </array>
  </dict>
</array>
<key>FacebookAppID</key>
<string>{your-app-id}</string>
<key>FacebookDisplayName</key>
<string>{your-app-name}</string>
<key>LSApplicationQueriesSchemes</key>
<array>
  <string>fbapi</string>
  <string>fb-messenger-share-api</string>
  <string>fbauth2</string>
  <string>fbshareextension</string>
</array>
Run Code Online (Sandbox Code Playgroud)

  • 它确实出现了,当我单击“使用 Facebook 应用程序登录”时,我的应用程序没有回调,只是打开它并卡在启动屏幕上。但是,如果我单击“使用电话或电子邮件登录”,则身份验证过程会在 Safari 上发生并且可以正常工作。 (2认同)