Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Facebook graph api photo upload to a fan page album

Tags:

php

facebook

I have gotten the photo upload function to work with this code,

<?php

include_once 'facebook-php-sdk/src/facebook.php';
include_once 'config.php';//this file contains the secret key and app id etc...

$facebook = new Facebook(array(
    'appId'  => FACEBOOK_APP_ID,
    'secret' => FACEBOOK_SECRET_KEY,
    'cookie' => true,
    'domain' => 'your callback url goes here'
));

$session = $facebook->getSession();

if (!$session) {

    $url = $facebook->getLoginUrl(array(
               'canvas' => 1,
               'fbconnect' => 0,
               'req_perms'=>'user_photos,publish_stream,offline_access'//here I am requesting the required permissions, it should work with publish_stream alone, but I added the others just to be safe
           ));

    echo 'You are not logged in, please <a href="' . $facebook->getLoginUrl() . '">Login</a> to access this application';

} else{

    try {

        $uid = $facebook->getUser();
        $me = $facebook->api('/me');
        $token = $session['access_token'];//here I get the token from the $session array
        $album_id = 'the id of the album you wish to upload to eg: 1122';

        //upload your photo
        $file= 'test.jpg';
        $args = array(
        'message' => 'Photo from application',
        );
        $args[basename($file)] = '@' . realpath($file);

        $ch = curl_init();
        $url = 'https://graph.facebook.com/'.$album_id.'/photos?access_token='.$token;
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
        $data = curl_exec($ch);

        //returns the id of the photo you just uploaded
        print_r(json_decode($data,true));

    } catch(FacebookApiException $e){
        echo "Error:" . print_r($e, true);
    }
}
?>

I hope this helps, a friend and I smashed our heads against a wall for quite some time to get this working!

Anyways, here is my question, how can I upload a image to a fan page? I am struggling to get this working, when I upload the image all I get is the photo id but no photo in the album.

So basically, when the user clicks the upload button on our application, I need it to upload the image they created to our fan page's album with them tagged on it.

Anyone know how I can accomplish this?

like image 467
Odyss3us Avatar asked Jun 15 '10 16:06

Odyss3us


People also ask

Does Facebook graph search still work?

In early June 2019, the feature was further deprecated, with the majority of URLs for graph search queries no longer working. Facebook explained this by saying: "The vast majority of people on Facebook search using keywords, a factor which led us to pause some aspects of graph search and focus more on improving keyword ...


2 Answers

Follow the simple Get login url with

$data['url'] = $this->facebook->getLoginUrl(array('scope'=>'publish_stream,read_stream,user_likes,user_photos,manage_pages'));

this will let you post photo and add album in fanpage. Get access token for

$accounts = $this->facebook->api('/'.$PAGE_ID.'?fields=access_token', 'get', array('access_token' => $access_token));
$page_access_token = $accounts['access_token'];

Create album with other detail

            $album_details = array(
                 'message'=> 'Test album',
               'name'=> $today ,//should be unique each time,
            'access_token'=>$page_access_token
            );
            $album_created = $this->facebook->api('/'.$PAGE_ID.'/albums', 'post', $album_details);

Upload photo to a particualar fanpage album

$photo = $this->facebook->api('/'.$album_id.'/photos', 'POST', array(
                                         'source' => "@"."@".realpath(BASEPATH."../".$photopath),
                                         'message' => 'new photo',
                        'access_token' => $page_access_token,
                        'no_story' => 0
                                         )
                                      );

                //print_r( $album_created['id'] );

And change the path as you wish Happy coding

This code works aweesome in this site....why downvoted.?You can post photos to fanpage if you are owner of that page.I have a working copy of that application.

like image 106
2 revs Avatar answered Sep 28 '22 09:09

2 revs


This seems to be a bug with the Graph API. See this http://forum.developers.facebook.com/viewtopic.php?id=59063 (can't post links, yet)

like image 44
gsharma Avatar answered Sep 28 '22 09:09

gsharma