Problems by uploading Photo to album by Facebook API - PHP

前端 未结 2 1109
-上瘾入骨i
-上瘾入骨i 2021-01-22 11:18

I have problems to upload a photo to an album by the facebook API. this is my code.

$facebook->setFileUploadSupport(true);

    //Create an album         


        
相关标签:
2条回答
  • 2021-01-22 11:34

    After testing few things on Graph API Explorer, Here's a working PHP Version:

    <?php
    # Path to facebook's PHP SDK.
    require_once("facebook.php");
    
    # Facebook application config.
    $config = array(
        'appId'      => 'YOUR_APP_ID',
        'secret'     => 'YOUR_APP_SECRET',
        'fileUpload' => true # Optional and can be set later as well (Using setFileUploadSupport() method).
    );
    
    # Create a new facebook object.
    $facebook = new Facebook($config);
    
    # Current user ID.
    $user_id = $facebook->getUser();
    
    # Check to see if we have user ID.
    if($user_id) {
    
      # If we have a user ID, it probably means we have a logged in user.
      # If not, we'll get an exception, which we handle below.
      try {
    
        # Get the current user access token:
        $access_token = $facebook->getAccessToken();
    
        # Create an album:
        $album_details = array(
                'access_token' => $access_token,
                'name'         => 'Album Name',
                'message'      => 'Your album message goes here',
        );
    
        $create_album = $facebook->api('/me/albums', 'POST', $album_details);
    
        # Get album ID of the album you've just created:
        $album_id = $create_album['id'];
    
        # Output album ID:
        echo 'Album ID: ' . $album_id;
    
        # Upload photo to the album we've created above:
        $image_absolute_url = 'http://domain.com/image.jpg';
    
        $photo_details = array();
        $photo_details['access_token']  = $access_token;
        $photo_details['url']           = $image_absolute_url;                        # Use this to upload image using an Absolute URL.
        $photo_details['message']       = 'Your picture message/caption goes here';
    
        //$image_relative_url             = 'my_image.jpg';
        //$photo_details['source']        = '@' . realpath($image_relative_url);      # Use this to upload image from using a Relative URL. (Currently commented out).
    
        $upload_photo = $facebook->api('/' . $album_id . '/photos', 'POST', $photo_details);
    
        # Output photo ID:
        echo '<br>Photo ID: ' . $upload_photo['id'];
    
      } catch(FacebookApiException $e) {
        // If the user is logged out, you can have a 
        // user ID even though the access token is invalid.
        // In this case, we'll get an exception, so we'll
        // just ask the user to login again here.
        $login_url = $facebook->getLoginUrl( array('scope' => 'publish_stream, user_photos')); 
        echo 'Please <a href="' . $login_url . '">login.</a>';
        error_log($e->getType());
        error_log($e->getMessage());
      }   
    } else {
    
      # No user, print a link for the user to login and give the required permissions to perform tasks.
      $params = array(
          'scope' => 'publish_stream, user_photos', # These permissions are required in order to upload image to user's profile.
      );
    
      $login_url = $facebook->getLoginUrl($params);
      echo 'Please <a href="' . $login_url . '">login.</a>';
    
        }
    ?>
    

    I have added comments so you could understand what it does by reading the code.

    This works with both absolute url and relative url, I have commented out code for uploading image using relative url as you have mentioned in your comments you can't read real path of the image.

    EDIT: Note: The user has to give extended permissions to your facebook application to upload images to their profile, Those permissions are publish_stream and user_photos.

    Let me know if this helped you and if it works :)

    0 讨论(0)
  • 2021-01-22 11:35
        $user = $this->facebook->getUser();
            $this->facebook->setFileUploadSupport(true);
            $user_profile = $this->facebook->api('/me');
            $album_details = array(
                'message' => 'Hello everybody this is me ' . $user_profile['name'],
                'name' => 'I am so slim because I dont have money to eat....:('
            );
            $create_album = $this->facebook->api('/me/albums', 'post', $album_details);
    
    // Upload a picture
            $photo_details = array(
                'message' => 'I am so slim because I dont have money to eat....:('
            );
            $photo_details['image'] = '@' . realpath('./a.jpg');
            $upload_photo = $this->facebook->api('/' . $create_album['id'] . '/photos', 'post', $photo_details);
    

    Please use $facebook on $this->facebook

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