Reputation: 359
I am trying to create a page post link for my page in Facebook via Graph API, but first I need to upload a picture so I can use it in the post.
Can someone help me to post/upload this picture that are in my computer in Facebook, and then get its link to use it to create my post?
This is the PHP code that I am using to create the page post link. It is missing the picture, that I need to upload first from my computer and than use its URL.
<?php
session_start();
require_once( 'Facebook/FacebookHttpable.php' );
require_once( 'Facebook/FacebookCurl.php' );
require_once( 'Facebook/FacebookCurlHttpClient.php' );
require_once( 'Facebook/FacebookSession.php' );
require_once( 'Facebook/FacebookRedirectLoginHelper.php' );
require_once( 'Facebook/FacebookRequest.php' );
require_once( 'Facebook/FacebookResponse.php' );
require_once( 'Facebook/FacebookSDKException.php' );
require_once( 'Facebook/FacebookRequestException.php' );
require_once( 'Facebook/FacebookClientException.php' );
require_once( 'Facebook/FacebookOtherException.php' );
require_once( 'Facebook/FacebookAuthorizationException.php' );
require_once( 'Facebook/FacebookPermissionException.php' );
require_once( 'Facebook/FacebookServerException.php' );
require_once( 'Facebook/GraphObject.php' );
require_once( 'Facebook/GraphSessionInfo.php' );
require_once( 'Facebook/GraphUser.php' );
use Facebook\FacebookHttpable;
use Facebook\FacebookCurl;
use Facebook\FacebookCurlHttpClient;
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookClientException;
use Facebook\FacebookOtherException;
use Facebook\FacebookAuthorizationException;
use Facebook\FacebookPermissionException;
use Facebook\FacebookServerException;
use Facebook\GraphObject;
use Facebook\GraphSessionInfo;
use Facebook\GraphUser;
FacebookSession::setDefaultApplication('app','password');
$session = new FacebookSession('token');
$message = 'Test';
$link = "http://www.example.com.br";
$description = 'Description';
$name = 'Name';
$caption = 'Caption';
// $picture = Here I need to put the URL from the picture posted on Facebook
$request = new FacebookRequest(
$session,
'POST',
'/page_id/feed',
array (
'message' => $message,
'link' => $link,
'description' => $description,
'published' => 'false',
'name' => $name,
'caption' => $caption,
//'picture' => $picture,
)
);
$response = $request->execute();
$graphObject = $response->getGraphObject();
?>
Thanks
Upvotes: 2
Views: 5127
Reputation: 20753
You can upload the photo to the facebook with the API /photos
(this will upload a photo to your album)-
API: \POST /me/photos
Parameters:
'source' => //The photo, encoded as form data,
'no_story' => true, // no story will be generated on uploading the photo
'message' => //optional
To get the image raw data-
main.php
<html>
<body>
<form enctype="multipart/form-data" action="upload.php" method="post">
<p><label for="source">Photo</label><input type="file" name="source" /></p>
<p><input type="submit" value="Upload" /></p>
</form>
</body>
</html>
upload.php
if (!empty($_FILES)) {
$uploaddir = './uploads/'; // Upload folder
$uploadfile = $uploaddir . basename($_FILES['source']['name']);
if (move_uploaded_file($_FILES['source']['tmp_name'], $uploadfile)) {
$attachment = array(
'message' => "hi",
'source' => "@" . realpath($uploadfile),
'no_story' => true
);
$api_response = new FacebookRequest($session,'POST','/me/photos',$attachment);
$result = json_decode($api_response, TRUE);
$id = $result->id;
}
}
We'll use this $id
in the next step.
Make the /GET
request to /{id}?fields=picture
.
You'll get the picture url in the response- $response->{'picture'}
Use this picture url as the picture
parameter with the /feed
API.
Upvotes: 2