簡體   English   中英

適用於PHP的Facebook API:如何獲取用戶相冊和照片?

[英]Facebook API for PHP: how to get user albums and photos?

您好,我正在使用Facebook API for 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>';

我在這里找到了這個示例: 使用Graph API PHP SDK從特定的Facebook相冊中獲取所有圖像,但是說:無法在第53行中將類型為Facebook \\ FacebookResponse的對象用作數組(我進行了更改,但根本無法使用,因為API函數不存在!)

我也嘗試遵循以下文檔: https : //developers.facebook.com/docs/graph-api/reference/user/photos/

但是執行功能不存在! 我該怎么辦?

我已經解決了... $albums = $fb->get('/me/albums', $token)->getGraphEdge()->asArray(); 我可以將專輯ID和名稱作為數組獲取。 對於照片:

$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>

這可行!

您應該使用$photos = $fb->get("/{$album_id}/photos", $token)->getGraphEdge();

此處附帶的代碼可檢索不同大小的照片,而不是相冊中的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']}'/>";
        //}
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM