Post on a Facebook wall as Page, not as user

12,963

Solution 1

You need the publish_stream,manage_pages permissions. The code is something like:

<?php
// This code is just a snippet of the example.php script
// from the PHP-SDK <https://github.com/facebook/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);
    } else {
        $permissions = $facebook->api("/me/permissions");
        if( !array_key_exists('publish_stream', $permissions['data'][0]) ||
            !array_key_exists('manage_pages', $permissions['data'][0])) {
            // We don't have one of the permissions
            // Alert the admin or ask for the permission!
            header( "Location: " . $facebook->getLoginUrl(array("scope" => "publish_stream, manage_pages")) );
        }

    }
  } 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 your code
?>

I've written and in-depth tutorial about this: How To: Post On Facebook Page As Page Not As Admin User Using PHP-SDK

Solution 2

You must first have a user authorize via facebook connect, and request the manage_pages permission as a part of this request. You can use this permission to obtain a token and secret for the page in question. You then use those to authorize requests as opposed to the token/secret you received for the user.

Check out the "Page Login" section of this page for some additional info: http://developers.facebook.com/docs/authentication/

Share:
12,963

Related videos on Youtube

WASD42
Author by

WASD42

Web- and iPhone developer.

Updated on October 24, 2020

Comments

  • WASD42
    WASD42 over 3 years

    Is it possible to post on a Facebook wall as application and not as user? As far as I understand an application is not a valid user for Facebook, but there are numerous comments about posting as Page and not as User or Application.

    How can I do it using PHP Facebook API?

  • WASD42
    WASD42 about 13 years
    It is necessary that the message was signed as belonging to the application (or any Facebook page), rather than the Facebook user. Imagine the following situation: 1. Application's user (not Facebook's!) perform some action in it; 2. Application adds a message about what just happened on its own Facebook wall or page. Strictly speaking, user of application is not required to be registered on Facebook. It is only necessary that the application in Facebook had an ability to post messages on application's wall AND as application as author.
  • vinzenzweber
    vinzenzweber about 13 years
    You should probably add the offline_access permission as well!

Related