Получение обложки Facebook с помощью PHP SDK & Graph API - PullRequest
10 голосов
/ 14 ноября 2011

Я хотел бы знать, есть ли простой способ получения фотографии обложки от пользователя в моем приложении через php sdk facebook.

Заранее спасибо.

Ответы [ 13 ]

35 голосов
/ 25 мая 2012

Facebook, кажется, недавно добавил поле Обложка к объекту пользователя.

https://graph.facebook.com/facebookuserid?fields=cover предоставит вам фото обложки. Детали

Ссылка на документ Facebook: http://developers.facebook.com/docs/reference/api/user/

24 голосов
/ 22 марта 2012

Я думаю, что проще всего использовать график 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"
}
9 голосов
/ 23 февраля 2012

Facebook имеет очень скудную и устаревшую документацию ... В настоящее время нет правильного способа сделать это через Graph API, но с FQL это возможно.

SELECT pic_cover FROM user WHERE uid='yourUserId'

Поле pic_coverне задокументировано, но доступно.Ответ должен выглядеть следующим образом:

[
 {
  "pic_cover": {
   "cover_id": someId,
   "source": "someUrl",
   "offset_y": someOffset
  }
 }
]
4 голосов
/ 18 августа 2015

Последние версии Graph API (2.4 на момент написания статьи) поддерживают поле 'picture', которое возвращает изображение профиля пользователя. Стоит проверить.

/<user-id>?fields=id,name,picture
2 голосов
/ 11 марта 2012

Я думаю, что лучше спросить тип альбома, чем название.

$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;
    }
}
1 голос
/ 15 апреля 2015

Я использовал 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 */
                      }];

Результат является типом словаря.Вы можете увидеть ссылку на фотографию обложки пользователя под тегом "cover", а также ее тег "source".

1 голос
/ 02 августа 2014

Я использую имя пользователя вместо идентификатора, и это работает:

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

Соответственно проанализируйте JSON.

1 голос
/ 05 декабря 2013

пытается автоматически восстановить образ с помощью php

$json = file_get_contents("https://graph.facebook.com/PROFILE_ID?fields=cover");
$obj = json_decode($json);
echo $obj->cover ->source;
1 голос
/ 19 июня 2013

Я использую: 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-переменной?

Sr, я не могу ответить, поэтому я пишу здесь. (

1 голос
/ 14 ноября 2011

Похоже, что на этом этапе, в ожидании обновленной документации от Facebook, ваш метод является единственным «верным способом» для получения покрытия пользовательской шкалы времени.Если вы находите этот метод медленным или неэффективным - возможно, вы можете попробовать запустить его как задание cron с минимальной задержкой обновления ... например.запускать cron два раза в день (возможно, даже больше), возможно, обрабатывать двух или трех пользователей одновременно и запускать cron каждые 2 минуты ... Не решение, скажем так;больше предложений.

...