如何从 iOS 上的 Facebook SDK 获取用户数据
Posted
技术标签:
【中文标题】如何从 iOS 上的 Facebook SDK 获取用户数据【英文标题】:how to get user data from Facebook SDK on iOS 【发布时间】:2016-06-02 10:41:26 【问题描述】:下午好!我需要从 Facebook 获取用户数据。我成功获取了用户名、id、照片等数据。但是当您尝试查询婚姻状况等时,我会得到一个空字典的响应。我试图提出不同的要求,但总是得到这样的结果。我还阅读了这些主题official Facebook site、this、this,比如我该如何解决这个问题?
我的示例代码
static func getUserRelationship()
if (FBSDKAccessToken.currentAccessToken() != nil)
guard let currentUser = getCurrentFacebookUser() else return
FBSDKGraphRequest(graphpath: "/\(currentUser.id)/family", parameters: nil, HTTPMethod: "GET").startWithCompletionHandler( (requestConnection, result, error) in
if error == nil
let dictionary = result as! [String : AnyObject]
let array = dictionary["data"]
print("facebook", result, dictionary, array?.count)
else
print(error.localizedDescription)
)
else
getDataLogin(
getUserBirthday()
, fails: (error) in
)
我在控制台中看到了结果
facebook
data = (
);
【问题讨论】:
您是否请求了适当的权限?用户关系developers.facebook.com/docs/facebook-login/… 【参考方案1】:您的 GraphRequest 不正确。如果要获取用户数据,graphPathe 应该是“我”,并且您应该请求参数以获取关系状态和其他信息。而且您还需要在 LogInWithReadPermissons 中请求公开个人资料,所以在阅读许可中:-
let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
fbLoginManager.loginBehavior = FBSDKLoginBehavior.Web
fbLoginManager.logInWithReadPermissions(["public_profile","email"], fromViewController: self) (result, error) -> Void in
if error != nil
print(error.localizedDescription)
self.dismissViewControllerAnimated(true, completion: nil)
else if result.isCancelled
print("Cancelled")
self.dismissViewControllerAnimated(true, completion: nil)
else
当检索信息时:-
FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, relationship_status"]).startWithCompletionHandler( (connection, result, error) -> Void in
if (error == nil)
let fbDetails = result as! NSDictionary
print(fbDetails)
)
顺便说一句,如果你想要婚姻状况,你应该使用 graphPath 作为“我”而不是“/user-id/family”。您可以使用它来获取此人的家庭关系。
【讨论】:
非常感谢。你帮了我!【参考方案2】:使用 swift 3 获取 facebook 用户信息更新
FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, email"]).start(completionHandler: (connection, result, error) -> Void in
if (error == nil)
let fbDetails = result as! NSDictionary
print(fbDetails)
else
print(error?.localizedDescription ?? "Not found")
)
【讨论】:
以上是关于如何从 iOS 上的 Facebook SDK 获取用户数据的主要内容,如果未能解决你的问题,请参考以下文章
我如何从 facebook 公开资料 Facebook IOS Swift SDK 中获取性别
如何从 iOS 中的 Facebook SDK 获取用户信息?
如何在 ios 的新 facebook sdk 中实现深度链接?