2011年7月26日 星期二

Facebook API 使用 FQL 抓取相簿封面 (album) 實作範例教學

PHP部分:

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

//facebook id
$fb_id = $facebook->getUser();

$aLoginParam = array( 'req_perms' => 'user_photos' );

//登入
if( !$fb_id ){
$auth_url = $facebook->getLoginUrl($aLoginParam);
header('Location: '.$auth_url);
exit;
}

//權限
try{
$perm = $facebook->api(array(
'method' => 'fql.query',
'query' => 'select user_photos from permissions where uid='.$fb_id
));
if( $perm[0]['user_photos'] != '1' ){
$url = $facebook->getLoginUrl($aLoginParam);
header('Location: '.$url); exit;
}
}catch (Exception $e) { }

//取得封面的
try{
$aAlbum = $facebook->api(array(
'method' => 'fql.query',
'query' => 'select aid,name,cover_pid from album where owner='.$fb_id
));
}catch(Exception $e){ }

$aId = array();
foreach( $aAlbum as $k => $v ){
$aId[] = $v['aid'];
}

//取得封面圖片路徑
try{
$aPhoto = $facebook->api(array(
'method' => 'fql.query',
'query' => 'select pid,src_big from photo where pid in(select cover_pid from album where owner='.$fb_id.')'
));
}catch(Exception $e){ }

$aCover = array();
foreach( $aPhoto as $k => $v ){
$aCover[$v['pid']] = $v['src_big'];
}
foreach( $aAlbum as $k => $v ){
$aAlbum[$k]['cover_src'] = $aCover[$aAlbum[$k]['cover_pid']];
}
var_dump($aAlbum);


這樣 $aAlbum 會有相簿名稱(name)與圖片路徑(cover_src)

10 則留言:

  1. Dear Bruce

    首先,感謝您提供的文章對我幫助甚多。

    我算是PHP的新手
    由於我想實作與您本篇的功能
    可是我run出來是整面空白的(無錯誤訊息)

    follow您的程式碼,我只改了這部份而已:
    =================================
    $facebook = new Facebook(array(
    'appId' => 'xxxxxxxxxxxxx',
    'secret' => 'xxxxxxxxxxxxx',
    'cookie' => true,
    ));
    ==============================
    Q1. 想請教您有遇過類似問題嗎?
    Q2. 有本篇實作的網址可以參考嗎,謝謝

    回覆刪除
  2. 這邊只是片段的程式碼,取用使用者照片還需要進行facebook登入與照片取用授權
    我修改了文章內容,那是完整的程式碼

    回覆刪除
  3. Hi, 感謝您的回覆

    不過,我極度懷疑是我環境的問題...

    因為我所有程式碼都註解掉,只留下:
    =================================
    require_once 'facebook-php-sdk/src/facebook.php';
    $facebook = new Facebook(array(
    'appId' => 'xxxxxxxxxxxxx',
    'secret' => 'xxxxxxxxxxxxx',
    'cookie' => true,
    ));
    ==============================

    run出來依然是空白的><"

    所以,我想一開始這一段就有問題了...
    可我想不透這樣會有什麼問題
    因為跟官網的範例是一樣的。

    我是用LAMP環境,因為以前就有發生過同樣的程式,我朋友IIS可以 可我卻執行不出東西的窘境,到現在還是找不出原因...

    回覆刪除
  4. 哈 我發現原因了,原來是我沒安裝curl套件

    依然感謝大大提供了完整code

    回覆刪除
  5. 有時候會出現"頁面重新轉向不正確..."
    不曉得大大有沒遇過~"~

    回覆刪除
  6. 您好,由於最近在找人建置一個網頁平台
    主要功能類似相簿呈現功能,搭配資料庫

    不限語言,只要能做出需求功能即可

    請問您有在接網頁案子嗎?

    回覆刪除
  7. 近期工作量滿檔
    如可以等到九月中之後再進行,到時再聯絡

    回覆刪除
  8. 你好我是新手 剛接觸
    請問一下 我想要做一個應用程式 須要抓取好友們的生日
    這樣可以做得成嗎?

    回覆刪除
  9. 請參考 http://blog.978.tw/2011/09/facebook-api-fql.html

    回覆刪除