#php #facebook #facebook-graph-api #facebook-php-sdk
#php #Facebook #facebook-graph-api #facebook-php-sdk
Вопрос:
Я понял основную идею (я думаю), но, похоже, не могу успешно опубликовать что-либо, используя предоставленный Facbook PHP-класс. На примере этого примера кто-нибудь может увидеть что-нибудь, в чем может быть проблема?
// Initialize Facebook API
$fb = new Facebook(array(
'appId' => FACEBOOK_APP_ID,
'secret' => FACEBOOK_SECRET,
'cookie' => true
));
if($fb->getSession()) {
$res = $fb->api('/me/feed/', 'post', array(
'message' => 'test message',
'description' => 'testing'
));
}
var_dump($res);
Когда я вывожу содержимое $ res, я получаю значение face-palming NULL. Есть идеи? Если вышесказанное выглядит правильно, кто-нибудь может предложить некоторые вещи, которые я мог бы попытаться отладить?
Комментарии:
1. Проверьте, действительно ли выполняется блок кода между конструкцией if, что означает:
$fb->getSession()
верно?2. Для отладки: поместите случайные
echo
буквы s между вашими строками. Например.echo 'Debug 1';
после создания$fb
иecho 'Debug 2';
сразу внутри вашегоif()
. Таким образом, вы можете точно увидеть, какая строка кода неисправна. (Я не уверен, чтоecho
может быть сделано в среде Facebook.)
Ответ №1:
В вашем приложении, когда вы проверяете, зарегистрирован ли пользователь в Facebook, убедитесь, что вы подтверждаете, что ваше приложение запросило «особую привилегию» для публикации на стене пользователя. Вы можете сделать это, изменив свой код следующим образом:
$url = $this->facebook->getLoginUrl(array('canvas' => 1, 'fbconnect' => 0, 'req_perms' => 'user_status,publish_stream'));
Обратите внимание, что ключу req_perms присваивается список значений, включающий ‘publish_stream’. Если у вас нет этой привилегии, вызов feed завершится ошибкой.
Также, действительно ли это проблема или нет, вы можете обернуть свои запросы Facebook блоком try-catch, чтобы перехватить исключения типа FacebookApiException, чтобы получить больше информации при возникновении ошибок. Например:
try {
$uid = $this->facebook->getUser();
$me = $this->facebook->api('/me');
} catch (FacebookApiException $e) {
print_r($e);
}
Комментарии:
1. Это именно та проблема, с которой я столкнулся. Я знал, что должен запросить определенные разрешения, но документация (как всегда) устарела и ссылалась только на более старый метод выполнения этого.