使用Graph API PHP SDK从特定的Facebook相册中获取所有图像

时间:2011-07-13 12:22:03

标签: php facebook facebook-graph-api

您好我正在尝试从特定相册中获取所有照片(始终使用相同的硬编码ID)。 我正在使用Facebook的Graph API PHP SDK。这是我的代码:

<?php
require 'phpfiles/facebook.php';

    $facebook = new Facebook(array(
    'appId'  => 'aaaa',
    'secret' => 'bbbb',
    'cookie' => true
));

$user_profile = $facebook->api('/1881235503185/photos?access_token=cccc');
var_dump($user_profile);

var_dump输出:

array(1) { ["data"]=> array(0) { } }
  • 1881235503185是我的专辑的id不受限制,它向所有人开放
  • access_token是我从我的应用程序页面获取的用于我的fb id的令牌。我没有得到oauth错误。
  • 我拥有权限(user_photos)并尝试添加十几个其他权限。
  • 当我使用Graph API Explorer尝试时,它可以工作。

当我使用Javascript SDK时,它可以正常工作......

FB.api('/1881235503185/photos?access_token=cccc', function(response) {
    alert(response.data[0].name);
});

输出:Diep in de put

我忘记了什么吗?

3 个答案:

答案 0 :(得分:7)

我明白了!它应该是: <击>

<击>
$user_profile = $facebook->api('/1881235503185/photos', array('access_token' => 'cccc'));

<击>

使用新的Facebook PHP SDK应该是:

$albumjson = $facebook->api('/1881235503185?fields=photos');

答案 1 :(得分:3)

<?php
    require_once 'library/facebook.php';
    try{
        $facebook = new Facebook(array(
                'appId' => $app_id,
                'secret' => $app_secret,
                'cookie' => true
        ));
        if(is_null($facebook->getUser()))
        {
                header("Location:{$facebook->getLoginUrl(array('req_perms' => 'user_status,publish_stream,user_photos'))}");
                exit;
        }
        $me = $facebook->api('/me');
    }catch(Exception $e){
        echo $e->getMessage();
        echo '<p>Please try clearing your browser cookies or <a href="http://demos.frnzzz.com/fbAlbum/photos.php">click here</a>.</p>';
        die;
    }
?>
<html>
    <head>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> 
        <script type="text/javascript" src="http://cloud.github.com/downloads/malsup/cycle/jquery.cycle.all.latest.js"></script> 
        <script type="text/javascript"> 
        $(document).ready(function() {
            $('.slideshow').cycle({
                fx: 'fade'
            });
        });
        </script> 
        <title>WebSPeaks.in | Access facebook Albums on your site using PHP</title>
    </head>
    <body>
<?php
    $albums = $facebook->api('/me/albums');

    $action = $_REQUEST['action'];

    $album_id = '';
    if(isset($action) && $action=='viewalbum'){ 
        $album_id = $_REQUEST['album_id'];
        $photos = $facebook->api("/{$album_id}/photos");
        ?>
        <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>';
    ?>
    </body>
</html>

答案 2 :(得分:2)

我觉得很奇怪,它适用于JS而不是PHP ......让我觉得这与你的PHP FB设置有关。你有没有尝试过另一个电话检查它不是?如

$facebook->api('/me');

另外请确保您已检查过这些:

  

阅读您需要的“照片”对象

     

任何有效的access_token,如果它是public user_photos权限   访问用户user_photo_video_tags上传的照片和相册   允许访问用户已被标记的照片   friends_photos访问朋友照片的权限   friends_photo_video_tags允许访问其中的照片   用户的朋友已被标记

的Src:

http://developers.facebook.com/docs/reference/api/photo/