【问题标题】:Facebook graph API: ID of user profile pictureFacebook 图形 API:用户头像的 ID
【发布时间】:2016-07-12 20:45:16
【问题描述】:

有没有办法获取用户当前个人资料图片的 ID?

编辑:好的,似乎没有简单的方法来获取 ID!

但是随机测试发现每个用户都有一个属性为type="profile"的相册,而相册中的第一张图片总是头像,所以可以通过这种方式获取头像的ID .是否有一些 Facebook 经验丰富的人可以确认确实总是如此?

【问题讨论】:

  • 这是 2016 年,我找不到相同的方法。对于相册类型=“个人资料”,第一张图片并不总是个人资料图片。如果我们在此相册中选择“非常旧”的个人资料图片,则第一张图片不会更改。如果有人可以提供帮助,我也在寻找解决方案!

标签: facebook facebook-graph-api


【解决方案1】:

您可以从以下网址获取用户的公开头像:

https://graph.facebook.com/[id]/picture

参考: http://developers.facebook.com/docs/reference/api/

【讨论】:

  • 虽然没有给你带照片的身份证
【解决方案2】:

答案似乎是是的

例如,相册中的照片有一个 ID(不过,个人资料照片是一个不同的对象,它是一个不同的 FB ID)。每个对象的 ID 是 FB 新图形 API 的核心概念:社交图中的每个对象都有一个unique ID

确实,我曾经通过 FB Graph API 发出的数据请求会返回(成功时)JSON 数组形式的响应,该数组由嵌套的 ID-Value 对组成,例如来自用户对象的教育领域

"education": [
    {
       "school": {
           "id": "126533127390327",
           "name": "Massachusetts Institute of Technology"
    },
       "year": {
            "id": "140829239279495",
            "name": "1992"
    },
       "concentration": [
           {
                "id": "192578844099494",
                "name": "Computer Science"
           }
       ],
       "type": "College"
}

profile photoUser 对象的连接(即,每个 FB 对象都有 Fields连接)。

根据相关FB Developer Page 中的表格,调用 Graph API 请求图片(用户的个人资料照片)返回一个字符串,即 URL用于用户的个人资料图片

但是为什么这个相同的调用不返回用户的个人资料照片ID

我想的原因是 URL 返回:

Graph API : User Properties

用户的头像不存在,但在相邻节点中:

Graph API : User : Connections : picture

(请参阅 FB 文档了解 Graph API 结构 here)。

当您进行 API 调用时,检查 请求标头,尤其是 请求 URL ;当你这样做时,你会看到这样的东西:

http://profile.ak.fbcdn.net/hprofile-ak-snc4/32093_100005743929541_5467982_q.jpg

下划线之间的字符串 (100005743929541) 是用户 ID。这很容易通过再次调用 Graph API 来验证。从您的浏览器地址栏中(假设您已登录 Facebook)只需输入:

https://graph.facebook.com/me

同样,该 JSON 字符串中的第一项是用户的 FB ID。鉴于此,在我看来,如果用户配置文件 ID 确实有自己的 ID,那么 该字符串(用户的 FB ID)加上 ID 两端的两个较小的相邻整数字符串,应该就是这样——换句话说,就是上面请求 URL 中的 32093_100005743929541_5467982。

最后,回答这个问题的最佳方法可能是使用新的Graph API Explorer。 (我只是试图验证这一点,但我的请求被挂起。)

【讨论】:

  • 您似乎无法再可靠地从个人资料图片中获取用户 ID。这是我来自 /me 的用户 ID:10153540253304706。这是从我的个人资料图片 URL 中提取的 ID:10152550339904706。它们不匹配。
【解决方案3】:

还有一种更简单的方法可以完成这项任务。

  1. 获取https://graph.facebook.com/me/albums?access_token=的所有Facebook相册。

  2. 循环进入相册并检查对象 type == 'profile'。

  3. 获取对象 cover_photo 的值,其中 type == 'profile'。

cover_photo的这个值就是用户头像的id。

您可以通过https://graph.facebook.com/cover_photo value>?access_tokne=

查看

【讨论】:

  • "这个cover_photo的值是用户头像的id。" - 事实并非如此
  • 我猜这是正确的答案,因为简单的测试表明这张专辑的封面总是等于头像。
【解决方案4】:

我不知道你是否还需要这个,但这是我在 PHP 中的做法:

$albumsfb = $facebook->api('/me/albums/?fields=type');
$albumsfb = $albumsfb['data'];
foreach ($albumsfb as $albumfb) {
    if ($albumfb['type']=='profile'){
        $albumprofile = $albumfb['id'];
        break;
    };
}
$photoprofilefb = $facebook->api('/'.$albumprofile.'/?fields=cover_photo');
$photoprofilefb = $photoprofilefb['cover_photo'];
$photoprofilefb = $facebook->api('/'.$photoprofilefb);
$fotoperfilfburl = $photoprofilefb['source'];

把“我”换成你想要的用户ID?

【讨论】:

    【解决方案5】:
    http://graph.facebook.com/<SOCIAL-ID>/picture?type=<small|normal|album|large|square>
    

    SOCIAL-ID = Facebook 返回的社交 ID。

    small|normal|album|large|square = 图片大小。

    【讨论】:

      【解决方案6】:

      我最近尝试在 Graph API 浏览器中为我朋友的一张个人资料图片点赞

      以下是我获取他当前个人资料照片 id 的方法:

      fields=friends..fields(albums.fields(photos.fields(id,name,link),name))
      

      如果您使用过 Graph API 资源管理器,您可能会注意到在您勾选复选框时在 textEntry 中生成的上述代码行。限制大小由你决定,我只是保持为 1 以便快速接收 JSON 对象(没有限制,我花了 5 分钟才得到包含大量信息的 JSON 对象)。

      以下是您需要在 Graph API 中检查的内容(保持顺序):

      朋友 在朋友相册中 在相册名称和照片内(在照片内是照片的 ID 和名称)

      我制作了一个 PHP 脚本来点赞我朋友的所有头像 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多