【发布时间】:2017-11-16 23:54:36
【问题描述】:
我在这里看到过类似的问题,但似乎没有一个可以解决我的问题。
我目前正在创建一个使用 Facebook SDK 登录并返回用户信息的 iOS 应用。
我已成功登录 facebook 并收到请求的信息。但是,尽管允许电子邮件的读取权限,但请求并未返回电子邮件。
/********************
Place Facebook login button
*********************/
let loginButton = FBSDKLoginButton()
view.addSubview(loginButton)
loginButton.delegate = self
loginButton.readPermissions = ["email", "public_profile"]
//add button constraints
loginButton.center = view.center
}
/**
* Functions called when user handed back from facebook login
**/
func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) {
print("Did log out of facebook")
}
/**
* Functions called when user handed back from facebook login
**/
func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
if error != nil {
print(error)
} else
{
print("Successfully logged in with facebook")
FBSDKGraphRequest(graphPath: "/me", parameters: ["fields": "id, name, email"]).start
{ (connection, result, err) in
if err != nil{
print("Failed to start graph request: ", err)
return
}
print(result)
}
}
}
【问题讨论】:
-
电子邮件仅在用户已经确认并验证后才会返回。此外,在极少数情况下,即使用户授予了权限,隐私设置也会使其不返回电子邮件。如果您的应用绝对需要一封电子邮件,那么您应该实施一个额外的步骤,让用户手动输入它(当然验证也成为您的责任)......并不是每个用户都有电子邮件存档使用 Facebook,例如,如果他们仅使用手机注册。
标签: ios swift facebook facebook-sdk-4.0