首页 > 解决方案 > 通过 Facebook 登录不适用于我的 iOS 应用

问题描述

我的应用程序有一个设置,用户可以通过电子邮件和密码输入或通过他们的 Facebook 登录凭据正常登录。

为了通过 Facebook 处理登录,我通过 Cocoapods 使用 Facebook 依赖项。我最近也更新了这些依赖项。

Podfile 片段:-

pod 'FacebookCore'
pod 'FacebookLogin'
pod 'FacebookShare'

我的 Podfile.lock 片段:-

- FacebookCore (0.5.0):
    - Bolts (~> 1.9)
    - FBSDKCoreKit (~> 4.37)
- FacebookLogin (0.5.0):
    - Bolts (~> 1.9)
    - FacebookCore (~> 0.5)
    - FBSDKCoreKit (~> 4.37)
    - FBSDKLoginKit (~> 4.37)
- FacebookShare (0.5.0):
    - Bolts (~> 1.9)
    - FacebookCore (~> 0.5)
    - FBSDKCoreKit (~> 4.37)
    - FBSDKShareKit (~> 4.37)
- FBSDKCoreKit (4.38.1):
    - Bolts (~> 1.9)
- FBSDKLoginKit (4.38.1):
    - FBSDKCoreKit
- FBSDKShareKit (4.38.1):
    - FBSDKCoreKit

用户可以使用电子邮件/电话号码密码凭据通过 Safari 浏览器通过 Facebook 网站使用他们的 Facebook 凭据登录

当用户尝试通过 iPhone 中的 Facebook 应用程序登录时,就会出现问题。

这些是手头问题的屏幕截图。

第一个屏幕截图显示了通过我的应用程序的 facebook 登录页面:-

登录屏幕

下一个屏幕截图显示了尝试通过 facebook 应用程序登录时出现的错误:-

错误画面

在寻找解决方案时,我遇到了这个帖子:- 类似的帖子

根据这篇文章,我检查了我的 info.plist。似乎有效

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>fb{facebook-app-id}</string>
        </array>
    </dict>
</array>
...
<key>FacebookAppID</key>
<string>{facebook-app-id}</string>
<key>FacebookDisplayName</key>
<string>{facebook-display-name}</string>
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>fbapi</string>
    <string>fb-messenger-api</string>
    <string>fbauth2</string>
    <string>fbshareextension</string>
    <string>whatsapp</string>
</array>

这是我在登录视图控制器中用于 Facebook 相关登录的代码:-

func facebookLoginButtonClicked(sender: UIButton) {
    let loginManager = LoginManager()

    loginManager.logIn(readPermissions: [ReadPermission.publicProfile, ReadPermission.email], viewController : self) { loginResult in
        switch loginResult {
        case .failed(let error):
            print(error)
        case .cancelled:
            print("User cancelled login")
        case .success(let grantedPermissions, let declinedPermissions, let accessToken):
            if let token = accessToken.authenticationToken ?? nil{
                let params = ["access_token": token as AnyObject, "account_type":  PineSimpleData.getOnboardingAccountType()! as AnyObject]
                let url = "/user/connect/facebook"
                self.socialLogin(params: params, url: url)
            }
        }
    }
}

AppDelegate 中的代码片段:-

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

}

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
    var handled = FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
    if handled {
        return true
    }
    ....
    return handled
}

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    if FBSDKApplicationDelegate.sharedInstance().application(app, open: url, options: options) {
        return true
    }
    ....
    return true
}

func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
    return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}

到目前为止,通过应用程序和 Facebook 网站登录都可以正常工作。我应该如何处理这个错误?facebook 开发者部分有强制规定吗?如果是这样,我应该在 facebook 开发人员页面中进行哪些更改?任何帮助表示赞赏。

标签: iosswiftfacebookfacebook-ios-sdk

解决方案


以下是基本步骤:-

  1.Open https://developers.facebook.com and select your app

   2.Settings > Basic > Add Platform

   3.Now select iOS from the window and add your Bundle ID and rest of the information and click on Save changes. 

同样的问题,您可以在这里查看:- iOS Facebook 登录“应用程序配置不允许给定 URL”


推荐阅读