Facebook 图形 API JSON 电子邮件
Posted
技术标签:
【中文标题】Facebook 图形 API JSON 电子邮件【英文标题】:Facebook Graph API JSON email 【发布时间】:2015-09-19 12:50:08 【问题描述】:我正在使用 Web Graph API 从 facebook 获取数据。 我需要获取用户的电子邮件。
我有一个函数来获取和解析 JSON 数据。我将它与访问令牌一起使用来获得我想要的东西,但我只能获得名称和 ID。
这是我的 Facebook 权限
fbButton.readPermissions = ["public_profile", "email", "user_friends"]
但是,当我从 json 打印我的数组时,我只有
"name" : "**********",
"id" : "************"
如果我使用 Facebook Graph API Explorer 并创建一个 Token,我可以访问关于我的所有数据。但是当我在 swift 中创建我的令牌时是不可能的。
我还验证了我的 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))
【问题讨论】:
【参考方案1】:您必须明确说明您希望从查询中获得哪些结果。在您的情况下,它应该类似于以下内容:
me?fields=id,name,email
===
EXTRA:我建议您使用 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 ?? ""
)
【讨论】:
谢谢,但您没有回答问题:S 我有一个这样的链接:graph.facebook.com/me?access_token=myToken 并且它与来自 Graph Explorer 的令牌配合得很好而且我使用了 FBSDKGraphRequest 但我有很多异步功能的问题.... 您能否提供更多关于您如何在应用程序中调用图形 API 的代码?【参考方案2】:我只是通过在我的 URL 中添加这个来解决我的问题:
/me?fields=email&access_token=....
我把 Kumluzz 的答案有用了,谢谢 :)
【讨论】:
以上是关于Facebook 图形 API JSON 电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
Facebook Android SDK 图形 API 版本
Facebook Graph Request 正在返回名称但不是电子邮件