在 Facebook 个人资料页面上获取用户信息

Posted

技术标签:

【中文标题】在 Facebook 个人资料页面上获取用户信息【英文标题】:Get user information on the Facebook profile page 【发布时间】:2012-04-15 16:15:03 【问题描述】:

我想创建一个非常基本的 C# 应用程序,它可以获取 Facebook 用户配置文件的公开可用信息。我已经阅读了几页 Graph API,但有一个问题。在这里,您可以看到一个包含各种公开信息的用户个人资料:

http://tr-tr.facebook.com/people/A-Altan-Yurt/100002356385895

但是,我无法通过此链接使用 Graph API 获得所有这些信息:

https://graph.facebook.com/100002356385895

我尝试抓取页面,但返回的文档不包含任何有用的信息。由于所有这些信息都是公开的,我认为不应该对它们进行访问限制。我在这里做错了什么?

【问题讨论】:

【参考方案1】:

是的,即使是可公开访问的数据也不能只在 facebook 界面之外获取。

为了获取数据,您需要一个有效的访问令牌,例如,如果您尝试same user's feed 的网址,您将获得:


   "error": 
      "message": "An access token is required to request this resource.",
      "type": "OAuthException",
      "code": 104
   

你可以试试这个same url with the Graph API Explorer,在你授权这个应用后,它会有一个访问令牌,你会得到那个用户的公开信息。

那里使用的访问令牌(在 API Explorer 中)是一个应用访问令牌,这可能是最容易获得的令牌,这里是关于 Authenticating as an App 的文档。 获得访问令牌后,您就可以开始查询图形 api 并获取公共数据。

您可以使用其他访问令牌类型,例如用户令牌。


编辑

即使事情对 facebook 上的用户是公开的,但它们对应用程序是不公开的,您需要请求正确的权限,比如说教育 (user_education_history)。

您可以在 User object 的文档中准确查看每个字段所需的权限,在 fields 表中,第 3 列的标题为 Permissions '会看到你需要的每个字段。

【讨论】:

谢谢,但还是有问题。即使使用访问令牌,我也无法获得我想要的信息。我从您发布的 Graph API Explorer 链接中删除了 /feed 部分,但返回的 JSON 对象与 没有 访问令牌的对象几乎相同。您能否描述一下我如何获得兴趣、教育等信息?谢谢。 好的,我明白了。原谅我,但我还是有点困惑。为了获取教育信息(和user_education_history 权限),我可以未经用户许可这样做还是应该显示一个权限对话框(来自 Facebook)并要求每个用户让我的应用程序获取这些信息? (我猜这对于任何应用程序都毫无用处!尤其是如果它是公开的) 我要问的是:如果有 ANY 方法可以获取这些信息(教育、喜欢、音乐等),请告诉我。 是的,您必须请求 user_education_history 权限才能获得教育领域,即使它是公开的。没有办法绕过它,并且存在这种限制,以便用户拥有某种隐私。你看,我作为用户决定其他用户将能够看到我的教育信息这一事实并不意味着我希望任何应用程序都可以获取它并将其存储在其数据库中。所以,不,如果不请求权限,你就无法做到这一点。

以上是关于在 Facebook 个人资料页面上获取用户信息的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 8 中无法从 Facebook 获取用户的电子邮件个人信息

Facebook PHP SDK - 无需 Facebook 连接即可获取我的应用用户的用户名和个人资料图片

如何从 Facebook/Spotify 获取音乐收听数据?

获取 Facebook 用户信息并从中为 Android SDK 创建配置文件

Facebook graph api 获取用户信息

获取 facebook 用户信息到另一个视图控制器