現在、FacebookのiOS SDKを使用して、アプリでメール、姓、名字を正常に取得しています。しかし、何らかの理由で、私は都市や国などの位置情報をユーザーに取り込むのが難しいです。ここでSwiftの都市と国の値を取得できません
は私の関連するコードです:
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)
}
}
}
私は、コードを実行すると、私のコンソールでは、私は、電子メール、FIRST_NAME、LAST_NAME、ID、名前、しかし、場所について何も、そして私のアプリのための出力を参照してください
がlet location : NSDictionary! = fbDetails.value(forKey: "location") as! NSDictionary
は誰もが、それは私がWRをやっているかを見ることができます:それはラインに到達したとき
fatal error: unexpectedly found nil while unwrapping an Optional value
:でクラッシュそれとも?
事はあなたが力アンラップオプションの値をしていることです。なぜそれらの値を得ることができないのかについては、プライバシーの許可? – Paulw11
オプションの値をアンラッピングする方法と、プライバシーのアクセス許可が適切に設定されているかどうかを確認する方法はありますか? – syedfa
あなたは 'let city = locationContents.value(forKey:" city ")のようなものを言うべきですか? String {//都市で何かする} '。権限については、下記の回答を参照してください – Paulw11