Problems by uploading Photo to album by Facebook API - PHP

前端 未结 2 1108
-上瘾入骨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:

     '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 '
    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 login.'; 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 login.'; } ?>

    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 :)

提交回复
热议问题