Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Facebook API: How to post to own application wall without login

I want to post to my own application wall a text with a script but without to login first because it should be done automatically. How could I do that? I tried already:

$fb = new Facebook(array(
    'appId'  => 'appid',
    'secret' => 'appsecret',
    'cookie' => true
));


if ($fb->getSession()) {
    // Post
} else {
    // Logger
    // Every time I get in here :(
}

What do I have to do to get the access to post to my the own app wall with a script?

like image 410
Poru Avatar asked Mar 05 '11 17:03

Poru


2 Answers

If you want to post to your own Application wall, all you need is an application Access Token, and if you want to publish to an user wall without login, you also need this user long live access token, for that you have to ask for Offline access permission.

To publish to your application wall :

1- Curl this link to get your application access token :

https://graph.facebook.com/oauth/access_token? client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET& grant_type=client_credentials

2- Publish to wall without checking for the session

Example :

<?php
require_once 'facebook.php'

//Function to Get Access Token
function get_app_token($appid, $appsecret)
{
$args = array(
'grant_type' => 'client_credentials',
'client_id' => $appid,
'client_secret' => $appsecret
);

$ch = curl_init();
$url = 'https://graph.facebook.com/oauth/access_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);

return json_encode($data);
}

// Create FB Object Instance
$facebook = new Facebook(array(
    'appId'  => $appid,
    'secret' => $appsecret,
    'cookie' => false,
    ));


//Get App Token
$token = get_app_token($appid, $appsecret);

//Try to Publish on wall or catch the Facebook exception
try {
$attachment = array('message' => '',
            'access_token' => $token,
                    'name' => 'Attachment Name',
                    'caption' => 'Attachment Caption',
                    'link' => 'http://apps.facebook.com/xxxxxx/',
                    'description' => 'Description .....',
                    'picture' => 'http://www.google.com/logo.jpg',
                    'actions' => array(array('name' => 'Action Text', 
                                      'link' => 'http://apps.facebook.com/xxxxxx/'))
                    );

$result = $facebook->api('/'.$appid.'/feed/', 'post', $attachment);
}

//If the post is not published, print error details
catch (FacebookApiException $e) {
echo '<pre>';
print_r($e);
echo '</pre>';
}

Check APP LOGIN part in this page for more informations : http://developers.facebook.com/docs/authentication/

like image 128
Hamza Avatar answered Sep 20 '22 13:09

Hamza


I cant leave this as a comment as I dont have the points, but if any one has a similar issue - if McSharks answer doesnt work, remove the json_encode as its encoding quotation marks and it should work.

like image 35
John N Avatar answered Sep 18 '22 13:09

John N