salivan salivan - 10 months ago 51
PHP Question

facebook php SDK, publish_stream OAuthException: (#200)

I know this error has been bitten to death over here, and I read every single one to have better understanding of my problem.

But my issue is a bit different, and I wonder if anyone can give me good suggestion where to look.

I'm using wordpress + wordpress social login. This plugin authenticates user and stores name/age/email/fbID/fbProfilePic in the DB.

I've a little feature on my website where users registered through facebook can click and post message to the their wall.

My code looks like this:

//IF user is registered via facebook, when he clicks INTERESTED message will appear on his/her wall to spread the news

$user = get_user_meta($current_user->ID,'Facebook',true);

if ($user && $_GET['commentstab'] == 1 && !$_POST['delmycom']) {

require ('Facebook/facebook.php');

//Access details
$facebook = new Facebook(array(
'appId' => 'XXX',
'secret' => 'XXX'
//'cookie' => true

//try {
$params = array(
'message' => "Hurray! This works :)",
'name' => "This is my title",
'caption' => "My Caption",
'description' => "Some Description...",
'link' => "",
'picture' => "",
$post = $facebook->api("/$user/feed","POST",$params);

echo "Your post was successfully posted to UID: $user";
//} //try

//catch (FacebookApiException $e) {
// $result = $e->getResult();
//} //catch

} //master if

I read in various topics that I need publish_stream permission from user to perform this action. But since I store user info separately in my own DB, how do I get this publish stream permission? Do I need to modify wordpress plugin to store some kind of access token? and utilize this token to post to wall?

Answer Source
  1. you generate loginurl with publish_stream permission
  2. if user is not logged in with permission, you have to make sure he does
  3. redirect user to proper page

you can do it like this,

    $facebook = new Facebook(array(
      'appId'  => APP_ID,
      'secret' => APP_SECRET,
      'cookie' => true,
    $user = $facebook->getUser();

    if ($user) {
      try {
        // Get the user profile data you have permission to view
        $user_profile = $facebook->api('/me');
      } catch (FacebookApiException $e) {
        $user = null;
    } else {
        $loginUrl = $facebook->getLoginUrl(array('scope' =>'publish_stream','redirect_uri'=>''));
      die('<script> top.location.href="'.$loginUrl.'";</script>');

    $params = array(
                  'message'       =>  "Hurray! This works :)",
                  'name'          =>  "This is my title",
                  'caption'       =>  "My Caption",
                  'description'   =>  "Some Description...",
                  'link'          =>  "",
                  'picture'       =>  "",
    $post = $facebook->api("/$user/feed","POST",$params);