iOS:使用 Parse 获取 Facebook 的用户数据

Posted

技术标签:

【中文标题】iOS:使用 Parse 获取 Facebook 的用户数据【英文标题】:iOS: Getting Facebook's user data with Parse 【发布时间】:2015-05-06 15:48:12 【问题描述】:

我正在使用 parse 在我的 ios 应用程序中注册来自 facebook 的用户。这是我登录按钮中的代码:

PFFacebookUtils.logInWithPermissions(["public_profile", "email", "user_friends"], 
        (user: PFUser!, error: NSError!) -> Void in

用户点击后,facebook 应用程序或 safari 将打开。用户输入电子邮件和密码后,它会告诉他们该应用将看到他们的公开个人资料、电子邮件、朋友。

到目前为止,一切似乎都运行良好。从 Parse 检索用户信息时出现问题:

<PFUser: 0x7fcd3ae5cae0, objectId: irrEruRILF, localId: (null)> 
username = LeFJc8ErtMLHqLmsonfNXq8Ck;

如您所见,它给了我“用户名 = LeFJc8ErtMLHqLmsonfNXq8Ck”,但它没有任何个人资料信息或电子邮件地址......我错过了什么?

【问题讨论】:

【参考方案1】:

PFUser 不等同于 Facebook 用户。您需要查询 Graph API 以从 Facebook 检索数据。

登录后尝试调用:

FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphpath:@"me" parameters:nil];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) 
    // handle response
];

Source

【讨论】:

【参考方案2】:

我通过首先打开具有权限的会话来修复它

FBSession.openActiveSessionWithReadPermissions(["public_profile", "email", "user_friends"], allowLoginUI: true, completionHandler: 
        (session:FBSession!, state:FBSessionState, error:NSError!) in

    PFFacebookUtils.logInWithPermissions(["public_profile", "email", "user_friends"], block:  user, error in

       FBRequestConnection.startForMeWithCompletionHandler(connection, result, error in

       // Then I access the user data like this:
       var loginResults = result as! NSDictionary
       var facebookID = loginResults["id"] as! String
       var firstName = loginResults["first_name"] as! String
       ....
       )

    )

)

【讨论】:

以上是关于iOS:使用 Parse 获取 Facebook 的用户数据的主要内容,如果未能解决你的问题,请参考以下文章

将 Facebook 的 Account Kit 与 Parse 集成

Facebook 登录 - 获取用户数据

iOS:通过自动登录获取 Facebook 访问令牌

在 iOS9 和 Swift2 中使用 Parse 登录 Facebook

Facebook iOS SDK:获取专辑封面图片

如何使用 Parse.com 登录获取 Facebook 用户电子邮件