2011-07-13 48 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

相關問題