无法从 Swift 中的 Facebook iOS SDK 捕获城市和国家/地区值

赛法

我目前正在使用 Facebook iOS SDK 在我的应用程序中成功捕获电子邮件、名字和姓氏。但是,由于某种原因,我很难为用户捕获位置信息,例如城市和国家/地区。

这是我的相关代码:

override func viewDidLoad() {

        super.viewDidLoad()
        fbLoginButton.delegate = self
        fbLoginButton.readPermissions = ["email", "public_profile", "user_location"]
}

extension RegisterViewController: FBSDKLoginButtonDelegate {

    func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) {
        print("Did log out of facebook")
    }

    func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
        if error != nil {
            print(error)
            return
        }

        print("Successfully logged in with facebook...")
        FBSDKGraphRequest(graphPath: "/me", parameters: ["fields": "id, name, first_name, last_name, email, location{location}"]).start { (connection, result, err) in

            if err != nil {
                print("Failed to start graph request:", err)
                return
            }

            print(result)

            let fbDetails = result as! NSDictionary
            let location : NSDictionary! = fbDetails.value(forKey: "location") as! NSDictionary //code crashes here
            let locationContents : NSDictionary! = location.value(forKey: "location") as! NSDictionary
            let city: String! = locationContents.value(forKey: "city") as? String
            let state: String! = locationContents.value(forKey: "state") as? String
            let country: String! = locationContents.value(forKey: "country") as? String

            print(fbDetails)
            print("city:", city)
            print("state:", state)
            print("country:", country)


        }
    }
}

当我运行代码时,在我的控制台中,我看到了电子邮件、名字、姓氏、ID、姓名的输出,但没有任何位置信息,我的应用程序崩溃了:

fatal error: unexpectedly found nil while unwrapping an Optional value 

当它到达线时:

let location : NSDictionary! = fbDetails.value(forKey: "location") as! NSDictionary

谁能看到我做错了什么?

鳕鱼

您需要将“user_location”添加到您的 read_permission 中。

fbLoginButton.readPermissions = ["email", "public_profile", "user_location"]

记得在你的 fb 应用中验证这个权限。(user_location 不是默认允许的权限)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法在Swift Project中建立Facebook ios SDK

iOS Swift和Facebook SDK

如何在Swift iOS中通过Pincode获取城市,州和国家/地区名称?

带有Cocoapods的Swift中的Facebook iOS SDK v 4.1.0:无法导入模块

使用Swift处理iOS SDK中的Facebook Graph API结果

Unity Facebook SDK,登录后无法从词典中检索国家

无法从Facebook iOS SDK接收数据

将Google自动完成功能限制为仅限城市和国家/地区iOS Swift

Facebook SDK登录在Swift 2 iOS 9中引发错误

Swift版本的Facebook iOS SDK以及如何在Response中访问数据

无法在Facebook ios SDK中获取登录者的电子邮件ID

Facebook注销无法在iOS的新SDK V.4.1.0中工作?

在Swift中的框架内导入Facebook SDK

在目标C ++中尝试IOS Facebook SDK

iOS 9中的Facebook登录SDK

Google Maps iOS SDK的GMSAutocompleteFilter中缺少“国家/地区”属性

Facebook iOS SDK和Swift:如何获取用户的个人资料图片

无法使用Swift在Xcode中使用Parse 1.7.2和Facebook SDK 4.1创建新用户

在Facebook-SDK 4.4.0中无法正确加载Facebook活动

Swift iOS Facebook SDK:如何共享动画GIF?

Facebook iOS Swift SDK:未收到回调

Facebook SDK使用Swift 3 iOS 10登录

Facebook SDK 4.0 IOS Swift以编程方式注销用户

Facebook SDK 4.0.1 Swift错误xcode 6.2 iOS 8.2

Facebook SDK的FBSDKShareDialog无法在iOS9上运行吗?

在 Swift iOS 中访问 Facebook 相册

Facebook iOS SDK和Passport-facebook身份验证

无法识别的选择器已发送到iOS9上Facebook sdk 4.6中的facebook登录管理器中的实例

Firebase SDK for Unity无法在iOS中编译