Ios Facebook登录-错误消息:可选类型的值';任何?';没有打开包装;你是想用'';还是'';?
我对斯威夫特还不太熟悉,犯了一些错误 我正在尝试创建Facebook登录。我想访问登录时使用的电子邮件地址 我这样设置参数:Ios Facebook登录-错误消息:可选类型的值';任何?';没有打开包装;你是想用'';还是'';?,ios,swift,facebook-graph-api,Ios,Swift,Facebook Graph Api,我对斯威夫特还不太熟悉,犯了一些错误 我正在尝试创建Facebook登录。我想访问登录时使用的电子邮件地址 我这样设置参数: class ViewController: UIViewController, FBSDKLoginButtonDelegate { let loginButton: FBSDKLoginButton = { let button = FBSDKLoginButton() button.readPermissions = ["email"] re
class ViewController: UIViewController, FBSDKLoginButtonDelegate {
let loginButton: FBSDKLoginButton = {
let button = FBSDKLoginButton()
button.readPermissions = ["email"]
return button
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(loginButton)
loginButton.center = view.center
loginButton.delegate = self
if let token = FBSDKAccessToken.current() {
fetchProfile()
}
}
func fetchProfile() {
print("FETCdfsdffdssdfdsfsdgvfsebgrwntynbdtyndghHED")
let parameters = ["fields": "email, first_name, last_name, picture.type(large)"]
FBSDKGraphRequest(graphPath: "me", parameters: parameters).start {(connection, result, error) -> Void in
if error != nil {
NSLog(error.debugDescription)
return
}
// Result
print("Result: \(result)")
// Handle vars
if let result = result as? [String:String],
let email: String = result["email"],
let fbId: String = result["id"] {
print("Email: \(email)")
print("fbID: \(fbId)")
}
}
}
我不明白这个错误以及它为什么抱怨。像这样使用:
if let data = result as? [String: Any],
let email = data["email"] {
print(email)
}
在您的项目中尝试以下示例 Swift-3
// Parameters for Graph Request
let parameters = ["fields": "email, first_name, last_name, picture.type(large)"]
FBSDKGraphRequest(graphPath: "me", parameters: parameters).start {(connection, result, error) -> Void in
if error != nil {
NSLog(error.debugDescription)
return
}
// Result
print("Result: \(result)")
// Handle vars
if let result = result as? [String:String],
let email: String = result["email"],
let fbId: String = result["id"] {
print("Email: \(email)")
print("fbID: \(fbId)")
}
}
您在哪一部分遇到此错误?是
print(error)
?您尝试过这种方式吗print(error??)
当您尝试这种方式时,打印结果是什么您尝试过这种方式吗print(“error:\(error)”)
instatedprint(error)
希望它能解决您的问题error@NazmulHasan因此,错误出现在-->if let email=result[“email”]as!一串{//build在电子邮件中失败此答案未满足原始问题want and Error谢谢!您的代码运行,但未将电子邮件返回给。只有名称和id…您可以向我显示您的所有代码吗?因为我收到电子邮件和FIDOK。所以我在顶部更新了我的代码。感谢您帮助我解决问题Vishalpethani我想您收到了电子邮件和f出价太高了。很高兴帮助你@jaelee