Facebook Graph Api - 作为管理员发布到粉丝页面

dig*_*rld 17 facebook facebook-graph-api

我设置了一个脚本,允许用户将消息发布到Facebook上的粉丝页面.这一切都有效,但有一个小问题.

问题:

将帖子添加到页面Feed时,它会显示发布用户的个人帐户.我希望它能够显示页面的帐户(例如,当您管理页面时,它说它来自该页面).我发布的帐户拥有该页面的管理员权限,但它仍然显示为个人帖子.

HTTP POST

$url = "https://graph.facebook.com/PAGE_ID/feed";
$fields = array (
    'message' => urlencode('Hello World'),
    'access_token' => urlencode($access_token)
);

$fields_string = "";
foreach ($fields as $key => $value):
    $fields_string .= $key . '=' . $value . '&';
endforeach;
rtrim($fields_string, '&');

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);

$result = curl_exec($ch);
curl_close($ch);
Run Code Online (Sandbox Code Playgroud)

ifa*_*our 17

要以Page而不是用户身份发布,您需要以下内容:
权限:

  • publish_stream
  • manage_pages

要求:

  • 页面ID和access_token(可以获得,因为我们获得了上面所需的权限)
  • 当前用户是管理员(能够检索页面的access_token)
  • 一个access_token具有长寿命到期时间的管理员之一,如果你想这样做离线(从后台脚本)

PHP-SDK示例:

<?php
/**
 * Edit the Page ID you are targeting
 * And the message for your fans!
 */
$page_id = 'PAGE_ID';
$message = "I'm a Page!";


/**
 * 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_info = $facebook->api("/$page_id?fields=access_token");
    if( !empty($page_info['access_token']) ) {
        $args = array(
            'access_token'  => $page_info['access_token'],
            'message'       => $message 
        );
        $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
?>
Run Code Online (Sandbox Code Playgroud)

这里连接 $user应该是管理员.

结果:
在此输入图像描述

更多在我的教程中

  • 谢谢,我一直在寻找像这样的简单工作代码的几个小时. (2认同)

Pet*_*ley 9

据我所知,你所要做的就是uid在你的stream.publish调用中指定一个(即页面的ID).

编辑

看看模仿