2015-09-02 5 views
2

Здравствуйте, я использую Facebook API для PHP (последняя версия), и я пытаюсь получить все альбомы с фотографиями пользователя.Facebook API для PHP: как получить альбомы и фотографии пользователей?

Я написал этот код:

<?php 
require_once "common.php"; 

if(!isset($_SESSION['facebook_access_token'])){ 
    header("Location: index.php"); 
    exit; 
} 

$token= $_SESSION['facebook_access_token']; 

try { 
    // Returns a `Facebook\FacebookResponse` object 
    $response= $fb->get('/me?fields=id,name,first_name,last_name,gender,link,birthday,location,picture', $token); 
} catch(Facebook\Exceptions\FacebookResponseException $e) { 
    echo 'Graph returned an error: ' . $e->getMessage(); 
    exit; 
} catch(Facebook\Exceptions\FacebookSDKException $e) { 
    echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
    exit; 
} 

$user= $response->getGraphUser(); 

$albums = $fb->get('/me/albums', $token); 

$action = (isset($_REQUEST['action'])) ? $_REQUEST['action'] : null; 

$album_id = ''; 
if($action=='viewalbum'){ 
    $album_id = $_REQUEST['album_id']; 
    $photos = $fb->get("/{$album_id}/photos", $token); 
    ?> 
    <div class="slideshow"> 
     <?php 
     foreach($photos['data'] as $photo) 
     { 
      echo "<img src='{$photo['source']}' />"; 
     } 
     ?> 
    </div> 
<?php 
} 

$pageURL = 'http://'.$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 
echo '<div class="alb">'; 
if(strstr($pageURL,'.php?')){ 
    $and = '&'; 
}else{ 
    $and = '?'; 
} 

echo '<p class="hd">My Albums</p>'; 
foreach($albums['data'] as $album) 
{ 
    if($album_id == $album['id']){ 
     $name = '<b><u>'.$album['name'].'</u></b>'; 
    }else{ 
     $name = $album['name']; 
    } 
    echo '<p>'."<a href=".$pageURL.$and."action=viewalbum&album_id=".$album['id'].">".$name.'</a></p>'; 
} 
echo '</div>'; 

Я нашел этот пример здесь: Get all images from specific Facebook album with Graph API PHP SDK Но это говорит: Не удается использовать объект типа Facebook \ FacebookResponse как массив на линии 53 (я изменился, но дон «т работы, так функция API не существует)

Я также попытался следовать документации: https://developers.facebook.com/docs/graph-api/reference/user/photos/

Но выполнять функции не существует! Что мне делать?

+0

с '$ альбомы = $ FB-> Get ('/ Me/альбомов', $ лексем) -> getGraphEdge() -> asArray();' Теперь я могу перечислить альбомы! Теперь я могу перечислить фотографию и получить идентификатор фото ... но как я могу показать эту картинку? –

ответ

4

Я решил ... с $albums = $fb->get('/me/albums', $token)->getGraphEdge()->asArray(); я могу получить идентификатор альбома и имя в виде массива. для фотографий:

$album_id = $_REQUEST['album_id']; 
    $photos = $fb->get("/{$album_id}/photos?fields=picture", $token)->getGraphEdge()->asArray(); 
    ?> 
    <div class="slideshow"> 
     <?php 
     foreach($photos as $photo) 
     { 
      echo " <img src='{$photo['picture']}' /> "; 
     } 
     ?> 
    </div> 

Это работает!

+2

Да, что работает действительно здорово, но он дает только размер изображений 130X130, можете ли вы, пожалуйста, направить, как получить большой размер изображения? –

+0

Чтобы получить несколько размеров и другую информацию, добавьте больше полей из списка на странице https://developers.facebook.com/docs/graph-api/reference/photo Например: $ fb-> get ("/ {$ album_id}/photos? fields = picture, id, name, images ", $ token) – Stickley

1

Вы должны использовать $photos = $fb->get("/{$album_id}/photos", $token)->getGraphEdge();

0

Здесь для прикрепления кода retrieve меняется размер фотографии, а не только 100px изображений из альбома.

$photos = $fb->get("/{--album_id--}/photos?fields=images&width", $accessToken->getValue())->getGraphEdge()->asArray(); 

    //var_dump($photos); 
    foreach($photos as $photo){ 
     echo "<br><img src='{$photo['images'][0]['source']}' />";//Get largest by 0 index 
     //foreach($photo['images'] as $photosize){ 
     // echo "<br><img src='{$photosize['source']}'/>"; 
     //} 
    } 
Смежные вопросы