2012年5月24日 星期四

Facebook PHP SDK 上傳照片

前些日子在製作FB APP的時,裡頭有個功能是上傳照片到自己的相簿。途中當然是遇到些許困難,在這分享FB APP在製作上傳照片功能所要注意的地方

一、新物件上增加fileupload
    
$facebook = new Facebook(array(
            'appId' => $fbconfig['appid'],
            'secret' => $fbconfig['secret'],
            'fileUpload' => true,
            'cookie' => true
        ));


二、呼叫上傳函數
A.使APP具有上傳的功能
$facebook = new Facebook(array(
            'appId' => $fbconfig['appid'],
            'secret' => $fbconfig['secret'],
            'fileUpload' => true,
            'cookie' => true
        ));
$facebook->setFileUploadSupport(true);

 三、增加發佈的權限

 A.因上傳照片需具有發佈的權限

publish_stream

四、建立相簿

 A.在上傳照片前一步是要建立一個相簿,不然照片無法上傳,除非直接帶入相簿編號在此不直接帶入編號,而是直接建立相簿並取得相簿編號

//Create an album
    $album_details = array(
        'message' => '測試上傳相簿描述',
        'name' => '測試上傳相簿名稱'
    );
    $create_album = $facebook->api('/me/albums', 'post', $album_details);
    $album_uid = $create_album['id'];

伍、上傳照片

    $access_token = $facebook->getAccessToken();//使用者訪問權限
    $file = $_FILES['FileName']['name']; //上傳的檔案
    $photo_details = array(
        'message' => '測試上傳相片以及標記好友名稱'
    );
    $photo_details['image'] = '@' . realpath($file);
    $upload_photo = $facebook->api('/' . $album_uid . '/photos?access_token=' . $access_token, 'post', $photo_details);
    //p($upload_photo); //印出來的ID是照片的ID 
    $pid = $upload_photo["post_id"];


4 則留言:

Unknown 提到...

您好

請問
message
如何斷行
或者寫入超連結呢?

Unknown 提到...

把message那邊改成

'message' => '測試上傳斷行
相簿描述 http://www.google.com'


斷行只要用ENTER段就可以,網址只要打上去便可

Unknown 提到...

我發現應用程式執行之後,似乎會重複建立相簿,沒有辦法存於同一個相簿裡面

Unknown 提到...

必須把你上一個建立的相簿ID給存起來
$album_uid
下次同一個使用者使用的時候先去找上一個相簿ID是否還存在 如果不存在在重新建立,如果存在 再把舊的相簿ID重複使用便可