Сообщение Facebook PHP SDK Graph API на странице не работает должным образом

Я пытаюсь добавить в свое приложение функцию, которая будет публиковать статус на временной шкале страницы пользователя-администратора с такими же подробностями, как если бы они размещались на Facebook.com. Основная функция, на которой я сосредоточен, — это обмен ссылками и миниатюры изображений, например, когда вы вставляете ссылку в свой статус, и она автоматически определяет миниатюру, дает вам красивую ссылку, описание и т. д. Я неустанно читал другие форумы. и документы API Graph, и я продолжаю сталкиваться с проблемами, когда сообщение отображается как пользователь-администратор, а не как страница. Вот мой код:

$facebook = new Facebook(array(
  'appId'  => $appID,
  'secret' => $appSecret,
));

$loginUrl = $facebook->getLoginUrl(array(
    "scope" => 'publish_stream, read_insights, manage_pages, photo_upload, video_upload, create_note, manage_notifications'
));

$access_token   = $facebook->getAccessToken();

$fbpost = array();

$fbpost['access_token'] = $access_token;
$fbpost['message']      = $message;
$fbpost['link']         = $link;
$fbpost['description']  = $description;
$fbpost['caption']      = $caption;
$fbpost['picture']      = $fbimg;

$status = $facebook->api('/'.$pageID.'/feed', 'POST', $fbpost);
var_dump($status);

Когда я публикую только $fbpost['message'], он правильно публикует статус как страницу, но когда я добавляю ЧТО-НИБУДЬ еще, он показывает сообщение как аутентифицированного пользователя-администратора вместо страницы. Очень расстраивает. Есть идеи?


person iDsteven    schedule 15.06.2012    source источник
comment
Кроме того, когда он публикует сообщения от имени пользователя-администратора, он показывает ссылки, изображения и т. д. в виде вложений, а затем должен пройти аутентификацию через приложение. Это не что иное, как публикация на временной шкале статуса.   -  person iDsteven    schedule 15.06.2012


Ответы (2)


Я продолжаю сталкиваться с проблемами, когда сообщение отображается как администратор, а не как страница.

Затем получите токен доступа к странице, а не токен доступа пользователя для администратора…

person CBroe    schedule 15.06.2012
comment
Спасибо CBroe, я не заметил дополнительного access_token, необходимого на этой странице, когда впервые посмотрел на нее (слишком много документов Facebook!). Поскольку нет хорошей документации о том, как справиться с этим в PHP, я также опубликую ответ. Спасибо еще раз! - person iDsteven; 15.06.2012

Спасибо CBroe за предоставление ссылки на документы Facebook на токене доступа к странице/приложению. . Проверив это, я придумал этот PHP (поскольку в PHP SDK нет хорошей документации для получения токена доступа к странице):

$user_token     = $facebook->getAccessToken();
$accounts       = $facebook->api('/me/accounts?access_token='.$user_token);
$account_token  = 0;
foreach ($accounts['data'] as $account) {
    if ($account['id'] == $_SESSION['facebook']) {
        $account_token = $account['access_token'];
    }
}

if ($account_token) {
    /// your page token code
} else {
    echo 'You must be an admin on this page!';
}
person iDsteven    schedule 18.06.2012