2011-07-13 45 views
8

嗨我想抓住一个特定的相册(总是相同的硬编码ID)的所有图片。 我使用的是来自Facebook的Graph API PHP SDK。这是我的代码:从图形API PHP特定的Facebook相册中获取所有图像

<?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)并尝试添加一打其他权限。
  • 当我尝试它与图形API资源管理器它的工作。

当我使用JavaScript SDK,它工作正常...

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

输出:在喋德把

我是不是忘了什么东西?

+0

这是否JS版本真的为你工作?我需要做一些完全相同的事情,并面对JS解决方案的问题。当我尝试在以专辑所有者的身份登录时调用这个功能 - 这很有效。但是,当我以任何其他用户的身份登录时,响应是空的,尽管专辑是公开的,并且其中有公开的照片。 –

回答

7

我知道了!它应该是:

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

有了新的Facebook PHP SDK应该是:

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

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

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

另外,还要确保你已经检查了这些:

要阅读“照片”对象,你需要

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

源:

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

+0

我已经尝试了所有这些权限,但没有成功。 api('/ me')给出了一个oauth错误(!?) ,但是当我使用api('/ [my_uid]')时,我得到了我所有的信息...还尝试从3.0.1降级到3.0.0也ni成功... – JeroenVdb

+0

我明白了!它应该是:$ user_profile = $ facebook-> api('/ 1881235503185/photos',array('access_token'=>'cccc')); – JeroenVdb

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> 
+0

感谢您的完整示例! – JeroenVdb

+0

我用你的例子,它会自动重定向到facebook.com,任何解决方案? – Parixit

+0

你确定这条线路正在工作吗? $ photos = $ facebook-> api(“/ {$ album_id}/photos”); – RicardoGonzales

相关问题