通过PHP SDK获取Facebook的封面照片&图API

时间:2011-11-14 17:54:13

标签: facebook facebook-php-sdk

我想知道是否有一种简单的方法可以通过facebook php sdk从我的应用程序中检索用户的封面照片。

提前致谢。

12 个答案:

答案 0 :(得分:35)

Facebook似乎最近将封面字段添加到用户对象

https://graph.facebook.com/facebookuserid?fields=cover会为您提供用户封面照片详情

Facebook Doc Link:http://developers.facebook.com/docs/reference/api/user/

答案 1 :(得分:24)

我认为最简单的方法是使用图形api:

http://graph.facebook.com/{user_id or page_id}?fields=cover

并解析返回的JSON。

{
  "cover": {
    "id": "XXX", 
    "source": "https://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-ash4/311205_989690200741_1231438675_n.jpg", 
    "offset_y": 66
  }, 
  "id": "XXXXXX"
}

答案 2 :(得分:9)

Facebook有一个非常糟糕和过时的文档...... 目前还没有一种正确的方法可以通过Graph API实现这一目标,但是使用FQL是可能的。

SELECT pic_cover FROM user WHERE uid='yourUserId'

字段pic_cover尚未记录但可用。 响应应如下所示:

[
 {
  "pic_cover": {
   "cover_id": someId,
   "source": "someUrl",
   "offset_y": someOffset
  }
 }
]

答案 3 :(得分:4)

Graph API的最新版本(2.4是撰写本文时的最新版本)支持'图片'返回用户个人资料图片的字段。值得一试。

/<user-id>?fields=id,name,picture

答案 4 :(得分:2)

我认为最好问一下专辑的类型然后命名。

$albums = $facebook->api("/me/albums");
$album_id = ""; 
foreach($albums["data"] as $item){
//echo $item["id"]." - ".$item["name"]." - ".$item["type"]." - ".$item["cover_photo"]."<br/>";
    if($item["type"] == "profile"){
        $album_id = $item["id"];
    $profile_picture_id = $item["cover_photo"];
    break;
    }
}

答案 5 :(得分:1)

在这个阶段看来,等待来自facebook的更新文档,您的方法是检索用户时间线封面的唯一“确定的方法”。
如果您发现此方法速度慢或效率低 - 也许您可以尝试将其作为cron作业运行并且具有最小的更新延迟。例如。每天运行两次cron(可能更多),一次可以处理两个或三个用户并且每2分钟运行一次cron ... 不是说解决方案;更多的建议。

答案 6 :(得分:1)

我使用:http://graph.facebook.com/ {user_id或page_id}?fields = cover

浏览器返回:

{
  "cover": {
    "id": "XXX", 
    "source": "https://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-ash4/311205_989690200741_1231438675_n.jpg", 
    "offset_y": 66
  }, 
  "id": "XXXXXX"
}

如何将字段'source'添加到php varible?

老兄,我不能回复,所以我在这里发帖。 :(

答案 7 :(得分:1)

它试图通过php自动从图像中恢复

$json = file_get_contents("https://graph.facebook.com/PROFILE_ID?fields=cover");
$obj = json_decode($json);
echo $obj->cover ->source;

答案 8 :(得分:1)

我使用的是用户名而不是id,它可以工作:

http://graph.facebook.com/{username}?fields=cover

相应地解析JSON。

答案 9 :(得分:1)

我使用了https://graph.facebook.com/facebookuserid?fields=cover链接但是没有用。当我搜索Facebook SDK文档时,我看到了有效的答案。 我希望这对你有所帮助。

[FBRequestConnection startWithGraphPath:[NSString stringWithFormat:@"/%@?fields=cover", [user objectForKey:@"id"]]
                      completionHandler:^(
                                          FBRequestConnection *connection,
                                          id result,
                                          NSError *error
                                          ) {
                          NSLog(@"%@",[[result objectForKey:@"cover"]objectForKey:@"source"]);
                          /* handle the result */
                      }];

结果是一种字典。您可以在&#34;封面&#34;下看到用户封面照片的链接。标签及其来源&#34;标签也。

答案 10 :(得分:0)

function getCover() {
    FB.api('/me?fields=cover', function(response) {
       document.getElementById('cover').innerHTML =
          "<img src='" + response.cover['source'] + "' alt='' />"

    });
}

答案 11 :(得分:-3)