How can I upload photos to album using Facebook Graph API

后端 未结 3 543
半阙折子戏
半阙折子戏 2020-12-11 10:37

Here is the code:

$file= \'bbbb.jpg\';
$data = array(
            basename($file) => \"@\".realpath($file),
            \"caption\" => \"Uploaded using         


        
相关标签:
3条回答
  • 2020-12-11 10:48

    your $data array should have "message" instead of "caption", also, remove "aid", "method", and "access_token"
    your $data has to have the file data and "message", that is it.

    $sds =$facebook->api('/me/13595/photos', 'POST', $data);
    

    where instead of 13595 just use the variable with the album aid

    also, if needed, access_token is best appended to api uri like this:

    $sds =$facebook->api('/me/13595/photos?access_token='.$access_token, 'POST', $data);
    

    also, if the php sdk doesn't work for you, I have successfully used cURL instead if your php installation supports it. in that case see cURL example at Upload Photo To Album with Facebook's Graph API

    0 讨论(0)
  • 2020-12-11 10:50

    Here are some various ways to upload photos using the Graph API. The examples assume you've instantiated the $facebook object and have a valid session for the current user.

    1 - Default Application Album of Current User

    This example will upload the photo to your default application album of the current user. If the album does not yet exist it will be created.

    $args = array('message' => 'Photo Caption');
    $args['image'] = '@' . realpath($FILE_PATH);
    
    $data = $facebook->api('/me/photos', 'post', $args);
    print_r($data);
    

    2 - Target Album

    This example will upload the photo to a specific album.

    $args = array('message' => 'Photo Caption');
    $args['image'] = '@' . realpath($FILE_PATH);
    
    $data = $facebook->api('/'. $ALBUM_ID . '/photos', 'post', $args);
    print_r($data);
    

    3 - Target Album with Access Token

    This example will upload a photo to a specific album which requires an access token.

     $args = array('message' => 'Photo Caption');
    $args['image'] = '@' . realpath($FILE_PATH);
    
    $data = $facebook->api('/'. $ALBUM_ID . '/photos?access_token='. $ACCESS_TOKEN, 'post', $args);
    print_r($data);
    
    0 讨论(0)
  • 2020-12-11 11:04

    The latest version of the Facebook PHP SDK wont work with the above examples without the following update to the code.

    class Facebook {
    ...
    *Line #539*
    protected function makeRequest($url, $params, $ch=null) {
    if (!$ch) {
      $ch = curl_init();
    }
    
    if( isset($params['doMultiPart']) ) {
        $doMultiPart= true;
        unset($params['doMultiPart']);
    } else {
        $doMultiPart= false;
    }
    
    $opts = self::$CURL_OPTS;
    $opts[CURLOPT_POSTFIELDS] = $doMultiPart ? $params : http_build_query($params, null, '&');
    ...
    

    Basically the problem is that the PHP SDK uses "curl_setopt_array" which if you pass it a url encoded string as the option value it will pass the data as application/x-www-form-urlencoded when what you really want is multipart/form-data; to do this we simply switch to passing in the array of options if we have a param of doMultiPart in the params array.

    This was a quick hack I put together to get something working, probably need to review the code to make sure it doesnt break anything else you are doing. Otherwise enjoy.

    0 讨论(0)
提交回复
热议问题