【问题标题】:Post to a Facebook page as the page not an admin user作为页面而不是管理员用户发布到 Facebook 页面
【发布时间】:2015-09-21 22:31:21
【问题描述】:

我正在尝试将消息发布到 Facebook 页面,但作为页面 - 而不是作为我自己的 Facebook 个人资料。我正在使用第 5 版 Facebook PHP SDK。任何想法如何实现这一目标?我下面的代码可以正常发布到 Facebook 页面,但它会将消息作为我自己的个人资料而不是页面发布。

session_start();

define('FACEBOOK_SDK_V4_SRC_DIR', __DIR__ . '/src/facebook-sdk-v5/');
require_once __DIR__ . '/src/facebook-sdk-v5/autoload.php';

$fb = new Facebook\Facebook([
    'app_id' => 'appid',
    'app_secret' => 'secretid',
    'default_graph_version' => 'v2.2',
]);
$helper = $fb->getRedirectLoginHelper();

try {
    $accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
    echo 'Graph returned an error: ' . $e->getMessage();
    exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
    echo 'Facebook SDK returned an error: ' . $e->getMessage();
    exit;
}


if (isset($accessToken)) {

    $_SESSION['facebook_access_token'] = (string) $accessToken;

    $linkData = [
        'link' => 'http://www.example.com',
        'message' => 'User provided message',
    ];

    try {
        $response = $fb->post('/294673057366719/feed', $linkData, $accessToken);
    } catch(Facebook\Exceptions\FacebookResponseException $e) {
        echo 'Graph returned an error: '.$e->getMessage();
        exit;
    } catch(Facebook\Exceptions\FacebookSDKException $e) {
        echo 'Facebook SDK returned an error: '.$e->getMessage();
        exit;
    }

    $graphNode = $response->getGraphNode();

    echo 'Posted with id: '.$graphNode['id'];

} else {

    $permissions = ['publish_pages', 'manage_pages'];
    $loginUrl = $helper->getLoginUrl('http://app.co.uk:8888/facebook/', $permissions);
    echo '<a href="'.$loginUrl.'">Log in</a>';

}

【问题讨论】:

    标签: php facebook facebook-php-sdk


    【解决方案1】:

    重点是在使用正确的访问令牌

    您需要为您的页面生成访问令牌。如何实现:

    1. 您需要一个用户,该用户是您要发布到的页面的管理员
    2. 为具有以下权限的用户生成访问令牌:publis_actions、manage_pages
    3. 现在将此短期访问令牌交换为长期访问令牌
    4. 终于可以调用api请求/USER_ID/accounts了。在结果中找到您想要的页面并复制访问令牌(重要:此调用使用从第 3 步生成的长期访问令牌!)

    现在使用此令牌作为页面在页面墙上发布。

    实时访问令牌交换简称的详细流程在这里https://developers.facebook.com/docs/facebook-login/access-tokens。对于所有调用,您可以在此处使用 facebook Graph API Explorer:https://developers.facebook.com/tools/explorer

    【讨论】:

      【解决方案2】:

      谢谢。我通过以下方式获得了页面的访问令牌:

      您的 Facebook 页面现在拥有一个不会过期的访问令牌

      【讨论】:

        猜你喜欢
        • 2011-07-11
        • 2013-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-23
        • 2012-04-19
        • 1970-01-01
        相关资源
        最近更新 更多