【问题标题】:Facebook API for PHP: how to get user albums and photos?Facebook API for PHP:如何获取用户相册和照片?
【发布时间】:2015-11-28 10:25:19
【问题描述】:

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

我在这里找到了这个例子:Get all images from specific Facebook album with Graph API PHP SDK 但是说:不能在第 53 行使用 Facebook\FacebookResponse 类型的对象作为数组(我已经更改但根本不工作,因为 API 函数不存在!)

我也尝试过关注文档:https://developers.facebook.com/docs/graph-api/reference/user/photos/

但是执行函数不存在!我该怎么办?

【问题讨论】:

  • with $albums = $fb-&gt;get('/me/albums', $token)-&gt;getGraphEdge()-&gt;asArray(); 现在我可以列出专辑了!好的,现在我可以列出照片并获取照片 ID……但我怎样才能显示那张照片?

标签: php facebook api facebook-graph-api facebook-php-sdk


【解决方案1】:

你应该使用$photos = $fb-&gt;get("/{$album_id}/photos", $token)-&gt;getGraphEdge();

【讨论】:

    【解决方案2】:

    我已经解决了... 与$albums = $fb-&gt;get('/me/albums', $token)-&gt;getGraphEdge()-&gt;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>
    

    这行得通!

    【讨论】:

    • 是的,效果非常好,但它只能提供 130X130 尺寸的图片,请您指导如何获得大尺寸的图片?
    • 要获取多种尺寸和其他信息,请从developers.facebook.com/docs/graph-api/reference/photo 的列表中添加更多字段 例如:$fb->get("/{$album_id}/photos?fields=picture,id,名称,图像",$token)
    【解决方案3】:

    这里附上代码检索不同大小的照片,而不是相册中只有 100 像素的图像。

    $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']}'/>";
            //}
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多