swift - Facebook 图形 API JSON 电子邮件

标签 swift facebook-graph-api

我正在使用 web Graph API 从 facebook 获取数据。 我需要获取用户的电子邮件。

我有一个获取和解析 JSON 数据的函数。我将它与访问 token 一起使用来获取我想要的内容,但我只能获取名称和 ID。

这是我的 Facebook 权限

fbButton.readPermissions = ["public_profile", "email", "user_friends"]

但是,当我从 json 打印我的数组时,我只有

{
  "name" : "**********",
  "id" : "************"
}

如果我使用 Facebook Graph API Explorer 并创建一个 token ,我就可以访问关于我的所有数据。但是当我快速创建我的 token 时是不可能的。

我还验证了我的 Facebook 应用程序和电子邮件数据已激活。

有人有什么想法可以帮助我吗?

====

编辑 1

这就是我调用图形 API 的方式

// Facebook Delegate Methods
func loginButton(connection: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {

    if (error != nil)
    {
        println("Error")
    }
    else {
        // If you ask for multiple permissions at once, you
        // should check if specific permissions missing
        if result.grantedPermissions.contains("email")
        {
            // Do work
        }
        println("User logged in")
        performSegueWithIdentifier("Login", sender: self)
    }
}

在这里,当我实例化 fb 登录按钮时

if (FBSDKAccessToken.currentAccessToken() == nil)
    {
        // User is not already logged
        println("No Logged")
        loading.hidden = true
        fbButton.readPermissions = ["public_profile", "email", "user_friends"]
        fbButton.delegate = self
    }
    else
    {
        fbButton.hidden = true
        println("Already Logged")
        performSegueWithIdentifier("Login", sender: self)
        println(FBSDKAccessToken.currentAccessToken().permissions)
        parseJSON(getJSON("https://graph.facebook.com/me/?access_token=" + FBSDKAccessToken.currentAccessToken().tokenString))
    }

最佳答案

您必须明确说明您希望从查询中获得哪些结果。在您的情况下,它应该类似于以下内容:

me?fields=id,name,email

===

额外:我建议您使用 Facebook SDK 中的内置类 FBSDKGraphRequest。您可以执行以下操作:

if FBSDKAccessToken.currentAccessToken() != nil {
    FBSDKGraphRequest(graphPath: "me?fields=id,name,email,gender,first_name,last_name,middle_name,birthday", parameters: nil).startWithCompletionHandler({ (connection, result, error) in

        // Something went wrong
        if (error != nil) {
            errorHandler()
            return
        }

        // Parses the returned result
        if let userData = result as? NSDictionary {

            // Extracts the  data points
            let fbId = userData[FacebookGraphConstants.Id] as? String ?? ""
            let gender = userData[FacebookGraphConstants.Gender] as? String ?? ""
            let birthdayString = userData[FacebookGraphConstants.Birthday] as? String ?? ""
            let email = userData[FacebookGraphConstants.Email] as? String ?? ""
            let firstName = userData[FacebookGraphConstants.FirstName] as? String ?? ""
            let middleName = userData[FacebookGraphConstants.MiddleName] as? String ?? ""
            let lastName = userData[FacebookGraphConstants.LastName] as? String ?? ""
            let displayName = userData[FacebookGraphConstants.DisplayName] as? String ?? ""
        }
    })
}

关于swift - Facebook 图形 API JSON 电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32668413/

相关文章:

ios - 删除 TableView 中的核心数据对象

swift - 如何创建要在 SceneKit 中使用的 DAE 文件?

arrays - Swift 中的二维数组

facebook - 如何通过图形 API 或 FQL 添加 'add people to group' 功能?

IOS通过facebook发送消息

Xcode 9 中的 Swift 4 - 如何轻量级迁移 Core Data?

ios - 如何通过 iPhone SDK 中的 FBconnect 或 Graph API 在 facebook 中评论或点赞照片?

facebook - 用于后台独立应用程序的 Instagram 图形 API 的访问 token

facebook - 用于查看页面发布展示次数的 FQL 查询

swift - 在 for-in 循环中使用字符串宽度的问题