如何从Facebook SDK检索电子邮件

时间:2016-10-30 19:34:04

标签: ios swift facebook

注意:请不要关闭重复,我在Stackoverflow上经历了几乎所有现有的线程,但我的问题仍未解决。

这是我使用最新Facebook SDK的 Swift 3 功能:

let req = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"email,name"], tokenString: token?.tokenString, version: nil, httpMethod: "GET")
_ = req?.start(completionHandler: { (connection, result, error : Error?) -> Void in

    if(error == nil) {
         print("result \(result)")
    } else {
         print("error \(error!)")
    }
})

结果:

result Optional({
    id = 102080884567XXXXX;
    name = "David Seek";
})

电子邮件权限已批准

enter image description here

该应用程序也处于实时模式:

enter image description here

我查看了reference guide,但我无法找到错误。

我的问题是,我将facebookID保存为电子邮件地址到我的后端,我试图找出原因...因此我尝试了提供的代码在顶部,但我没有收到电子邮件。

let result = FBSDKApplicationDelegate.sharedInstance().application(application,
                                                                   open: url,
                                                                   sourceApplication: sourceApplication,
                                                                   annotation: annotation)
if result {

    let token = FBSDKAccessToken.current()
    let fieldsMapping = [
        "id" : "facebookId",
        "name" : "name",
        "birthday": "birthday",
        "first_name": "fb_first_name",
        "last_name" : "fb_last_name",
        "gender": "gender",
        "email": "email"
    ]

    backendless?.userService.login(withFacebookSDK: token, fieldsMapping: fieldsMapping, response: { (user: BackendlessUser?) in

    }, error: { (fault: Fault?) -> Void in
        print("Server reported an error: \(fault)")
    })
}

我收到了所有信息,但电子邮件......

我错过了什么?非常感谢帮助。

1 个答案:

答案 0 :(得分:2)

  

授予电子邮件权限:

这不是截图显示的内容。它表明它已被批准,这意味着您的应用可以向用户询问它。但它仍然需要。

确保已成功发生 - 通过调试访问令牌,或通过API调用/me/permissions

您需要在登录时询问用户是否允许。