I have my own site which I am creating a blog/news entries but I want these to upload directly to my Facebook page as I add them.
Is there a simple way to do this?
My code is something like this
<?php
$title = "$_Post['title'];
$article = "$_Post['article'];
// Upload sql and query code code
?>
Is there a code or api I can use to also update to my facebook page
You will need to sign up to become a facebook developer, create an application, and then using the PHP SDK you can do exactly this.
Developers site: http://developers.facebook.com/
PHP SDK: http://developers.facebook.com/docs/reference/php/
Example code:
http://www.masteringapi.com/tutorials/how-to-post-on-facebook-page-as-page-not-as-admin-user-using-php-sdk/31/
<?php
// This code is just a snippet of the example.php script
// from the PHP-SDK <http://github.com/facebook/php-sdk/blob/master/examples/example.php>
require '../src/facebook.php';
// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId' => 'app_id',
'secret' => 'app_secret',
));
// Get User ID
$user = $facebook->getUser();
if ($user) {
try {
$page_id = 'page_id';
$page_info = $facebook->api("/$page_id?fields=access_token");
if( !empty($page_info['access_token']) ) {
$args = array(
'access_token' => $page_info['access_token'],
'message' => "I'm a Page!"
);
$post_id = $facebook->api("/$page_id/feed","post",$args);
}
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
// Login or logout url will be needed depending on current user state.
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl(array('scope'=>'manage_pages,publish_stream'));
}
?>
Related
Im implementing facebook's PHP SDK for authentication here. I've searched over net and found lots of tutorial on that. like Using Facebook PHP SDK 3 with CodeIgniter
i've modified base_facebook.php to return www.skillpaper.com/auth/fb_register in
$this->facebook->getLoginUrl()
when i click "Connect with Facebook" in login modal and facebook auth popup appears its successfully redirect to my given url. i.e www.skillpaper.com/auth/fb_register
and my code is like in auth controller:
public function fb_register(){
$userId = $this->facebook->getUser();
if($userId != 0){
// Get user's data and print it
$user = $this->facebook->api('/me');
var_dump($user);
}else{ echo "No user";}
}
i'm getting "No user" every time!
What am i missing? I don't want to use any JS API for this. any suggestion?
Thanks in advance.
Please Download the Facebook PHP SDK From https://developers.facebook.com/docs/reference/php/
Now Put src folder into application/controller folder.
Call into controller any function like this :-
require 'src/facebook.php';
$appId = FBAPPID;
$secretkey = FBSECRETKEY;
$facebook = new Facebook(array(
'appId' => $appId,
'secret' => $secretkey,
));
$fb['facebook']=$facebook;
$facebook_user = $facebook->getUser();
$fb['facebook_user']=$facebook_user;
if ($facebook_user) {
try {
$user_profile = $facebook->api('/me');
//$fb['logoutUrl'] = $facebook->getLogoutUrl();
} catch (FacebookApiException $e) {
error_log($e);
$facebook_user = null;
$this->load->view('Your Page');
}
}else {
$data['loginUrl'] = $facebook->getLoginUrl(array(
'scope' => 'user_about_me,email,user_birthday,friends_birthday,publish_stream,manage_pages,offline_access'
));
$this->load->view('Your Page');
}
I'm about to give up. for about a week i'm trying the simplest thing, authentication via facebook. every time I authenticatiom (via facebook login url) , getUser() and api('me'
) returns me null.
why?
the code:
$facebook = new Facebook(array(
'appId' => '306597542762982',
'secret' => '88XXXXXX7f1',
));
$user = $facebook->getUser();
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
if (!$user) {
$loginUrl = $facebook->getLoginUrl(array('scope'=>'user_actions.news,publish_stream,user_about_me,email,publish_actions'));
print $loginUrl; exit;
}
var_dump($facebook->api('me'));
SOS.
EDIT: POST :
$params = array (
'article' => 'http://fb.raal.co.il/content/view/$id/$title',
'access_token' => $facebook->getAccessToken()
);
$out = $facebook->api( '/me/news.reads','post', $params);
var_dump($out); exit;
Continuing what NullPointer quoted earlier, from user ifaour:
Just check for the current Facebook user id $user and if it returned null then you need to reauthorize the user (or use the custom $_SESSION user id value - not recommended)
require 'facebook/src/facebook.php';
// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId' => 'APP_ID',
'secret' => 'APP_SECRET',
));
$user = $facebook->getUser();
$photo_details = array('message' => 'my place');
$file='photos/my.jpg'; //Example image file
$photo_details['image'] = '#' . realpath($file);
if ($user) {
try {
// We have a valid FB session, so we can use 'me'
$upload_photo = $facebook->api('/me/photos', 'post', $photo_details);
} catch (FacebookApiException $e) {
error_log($e);
}
}
// login or logout url will be needed depending on current user state.
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
// redirect to Facebook login to get a fresh user access_token
$loginUrl = $facebook->getLoginUrl();
header('Location: ' . $loginUrl);
}
I've written a tutorial on how to upload a picture to the user's wall.
With the additional information, does this help? There is additional information I've found related to this, stating to attempt
$facebook->getAccessToken();
Apparently, that call can give either an app access token or a user access token. Depending on what you are trying to do with the access token, you will need the appropriate kind.
Alternatively, you may need to request certain permissions for what you are trying to do, which you can find here.
I'm trying to get the access token of my app using graph api, by requesting the following string:
https://graph.facebook.com/oauth/authorize?type=user_agent&client_id=app_id&redirect_uri=canvas_page&scope=read_friendlists
This redirects to: canvas_page/#access_token=xxx&expires_in=4124&code=A...
But i am not sure how i can parse this with PHP, so that i eventually can make a json request to get the friendlist.
I hope you may be able to guide me :)
Thank you
Are you using the Facebook PHP sdk?
https://github.com/facebook/php-sdk
You can use it like this:
$facebook = new Facebook(array(
'appId' => 'your_app_id',
'secret' => 'your_app_secret',
));
// Get User ID
$user = $facebook->getUser();
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl();
}
You can use the $loginUrl to make a link where the user needs to click that will authorize your application if they haven't done so already
Then you can make calls to the graph api like this:
$friends = $facebook->api('/user_id/friends');
You can use the following code below. It worked for me.
First, you need to download Facebook SDK from here https://github.com/facebook/php-sdk
function facebook_oauth_init($facebook_app_id, $facebook_app_secret, $cookie = false)
{
$facebook = new Facebook(array("appId" => $facebook_app_id, "secret" => $facebook_app_secret,
"cookie" => $cookie));
return $facebook;
}
$fb_app_id = "YOUR_APP_ID";
$fb_app_secret = "YOUR_APP_SECRET";
$fb_user_id = "YOUR_USER_ID";
$fb_access_token = "YOUR_GIVEN_ACCESS_TOKEN";
$facebook = facebook_oauth_init($fb_app_id, $fb_app_secret);
$accounts = $facebook->api('/' . $fb_user_id . '/accounts', 'get', array('access_token'=>$fb_access_token));
$accounts = $accounts['data'];
$access_token_2
foreach($accounts as $acc)
{
if($fb_page_id == $acc['id'])
{
$access_token_2 = $acc['access_token'];
break;
}
}
"$access_token_2" should be what you are looking for.
Hope this helps.
Muhammad.
Using this "api" method (on php sdk), you don't need to especify the access token, it will be generated and setted into Facebook object.
Anyway, you can to use $facebook->getAccessToken()
http://developers.facebook.com/docs/reference/php/facebook-getAccessToken/
I have looked at the developers' page but there tons of tons stuff. Application authentication (will my PHP called app?), setting permissions, how to make post after authentication?, where to store authentication? etc etc and so on I wasn't able to get all what all they mean, and what is need in all that stuff.
I only want to make a wall post to the community/fan page's wall as community/fan page. What steps should my PHP application follow to make a wall post?
I've written an in-depth tutorial about this subject: How To: Post On Facebook Page As Page Not As Admin User Using PHP-SDK
In short:
You need at least the publish_stream and manage_pages permissions
Query your page object to get a page access token
And post!
A starting code from my tutorial:
<?php
// This code is just a snippet of the example.php script
// from the PHP-SDK <http://github.com/facebook/php-sdk/blob/master/examples/example.php>
require '../src/facebook.php';
// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId' => 'app_id',
'secret' => 'app_secret',
));
// Get User ID
$user = $facebook->getUser();
if ($user) {
try {
$page_id = 'page_id';
$page_info = $facebook->api("/$page_id?fields=access_token");
if( !empty($page_info['access_token']) ) {
$args = array(
'access_token' => $page_info['access_token'],
'message' => "I'm a Page!"
);
$post_id = $facebook->api("/$page_id/feed","post",$args);
}
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
// Login or logout url will be needed depending on current user state.
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl(array('scope'=>'manage_pages,publish_stream'));
}
?>
Note: you may need the offline_access if you want to post while you are not connected to Facebook (e.g.: from your CMS)
I am trying to write a script that will post to my facebook page and I assume all I have to do is modify my code for posting to a users stream.
$attachment = array
(
...
);
$result = $facebook->api($user.'/feed/','post',$attachment);
What do I put instead of the user's id? I am not sure if it is simply my page's id. Any ideas?
Assuming that my facebook page means my feed you simply do
$user = 'me';
1. POST ON PAGE'S WALL AS USER:
Publishing on a Page's wall as user is straight forward, you could use something like:
<?php
// path to sdk
require './src/facebook.php';
$facebook = new Facebook(array(
'appId' => 'APP_ID',
'secret' => 'APP_SECRET',
));
$user = $facebook->getUser();
try {
$post_id = $facebook->api('/TARGET_PAGE_ID/feed', 'POST', array('message'=>"I am a user!"));
var_dump($post_id);
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl(array('scope'=>'publish_stream'));
}
// rest of code here
Note:
The owner of the post will be the current connected user.
the above depends on the page's Posting Ability settings.
you need the publish_stream permission
2. POST ON PAGE'S WALL AS PAGE:
Now to post as a Page you could use something like:
<?php
// This code is just a snippet of the example.php script
// from the PHP-SDK <http://github.com/facebook/php-sdk/blob/master/examples/example.php>
require '../src/facebook.php';
// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId' => 'app_id',
'secret' => 'app_secret',
));
// Get User ID
$user = $facebook->getUser();
if ($user) {
try {
$page_id = 'TARGET_PAGE_ID';
$page_info = $facebook->api("/$page_id?fields=access_token");
if( !empty($page_info['access_token']) ) {
$args = array(
'access_token' => $page_info['access_token'],
'message' => "I'm a Page!"
);
$post_id = $facebook->api("/$page_id/feed","post",$args);
}
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
// Login or logout url will be needed depending on current user state.
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl(array('scope'=>'manage_pages,publish_stream'));
}
// rest of code
?>
Notes:
You need the manage_pages and publish_stream permissions
Once you obtain the page's access_token you can start posting on its behalf
More about this is explained in depth in my tutorial.