我正在使用 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/