Facebook图形API:用户个人资料图片的ID

时间:2011-02-10 16:03:11

标签: facebook facebook-graph-api

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

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

但是,从随机测试中可以看出,每个用户都有一个属性为type="profile"的相册,此相册中的第一张图片始终是个人资料图片,因此可以获取个人资料图片的ID那样。有一些更有经验的Facebook确认这确实是这样的吗?

6 个答案:

答案 0 :(得分:18)

您可以从以下网址获取用户公开个人资料照片:

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

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

答案 1 :(得分:5)

答案似乎是

例如,相册中的照片具有ID(虽然配置文件照片是不同的对象,但是具有不同的FB ID)。每个对象的ID是FB新图API的核心概念:社交图中的每个对象都有一个 unique ID

实际上,我通过FB Graph API进行的数据请求以JSON数组的形式返回(成功时)一个响应,该响应由嵌套的ID值对组成,例如,用户对象中的教育字段

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

profile photo 用户 对象的连接(即每个FB对象都有字段 Connections )。

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

但是为什么同一个电话不会返回用户的个人资料照片 ID

我认为原因是URL返回:

Graph API : User Properties

用户的个人资料照片不存在,但在相邻节点中:

Graph API : User : Connections : picture

(请参阅图表API结构here的FB文档)。

进行API调用时,请检查 请求标题 ,特别是 请求网址 ;当你这样做时,你会看到这样的事情:

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两端的两个较小的相邻整数字符串,应该是吧 - 换句话说,就在上面的请求网址中的32093_100005743929541_5467982。

最后,也许最好的方法是使用新的Graph API Explorer。 (我只是试图验证这一点,但我的请求仍然悬而未决。)

答案 2 :(得分:2)

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

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

  2. 循环播放相册并检查对象输入 =='个人资料'。

  3. 获取对象的值 cover_photo ,其中输入 =='个人资料'。

  4. cover_photo 的值是用户个人资料照片的ID。

    您可以按https://graph.facebook.com/< cover_photo值>进行检查?access_tokne =

答案 3 :(得分:1)

我不知道你是否仍然需要这个,但这是我在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?

答案 4 :(得分:0)

http://graph.facebook.com/<SOCIAL-ID>/picture?type=<small|normal|album|large|square>

社交ID = Facebook返回了社交ID。

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

答案 5 :(得分:-1)

我最近尝试使用Graph API资源管理器中的朋友个人资料图片

以下是我如何获得他当前个人资料照片的身份:

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

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

以下是您需要在Graph API中检查的内容(维护订单):

友 在朋友专辑中 在相册名称和照片中(在照片中,照片的ID和名称)

我制作了一个PHP脚本来喜欢我朋友的所有个人资料图片:)