Я пытаюсь обновить статус Facebook, используя Facebook PHP SDK.
я обновил свой статус несколько раз, используя код ниже:
try {
$session = new FacebookSession($page_token);
$session->validate();
(new FacebookRequest($session, 'POST', '/' . $id . '/feed', array(
'message' => $message
)))->execute();
} catch(FacebookRequestException $e) {
.....
}
но это дает мне ошибку, пока я пытаюсь обновить этот статус:
RiversofGrue: Returns To The Palace http://clc.li/cxG #Grueheads #horror @crashpalace
на удивление успешно обновили этот статус с моего локального хоста. но на производственном сервере выдает ошибку.
Ошибка:
Error Message: couldn't open file "RiversofGrue: Returns To The Palace http://clc.li/cxG #Grueheads #horror @crashpalace"File: .../vendor/facebook/php-sdk-v4/src/Facebook/HttpClients/FacebookCurlHttpClient.php
Error Code: 26
Line: 150
TraceAsString: #0 .../vendor/facebook/php-sdk-v4/src/Facebook/FacebookRequest.php(248): Facebook\HttpClients\FacebookCurlHttpClient->send()
#1 .../Demo.php(146): Facebook\FacebookRequest->execute()
#2 .../DemoDemo.php(31): Demo->execute()
#3 .../vendor/laravel/framework/src/Illuminate/Console/Command.php(112): FacebookJobCommand->fire()
#4 .../vendor/symfony/console/Symfony/Component/Console/Command/Command.php(253): Illuminate\Console\Command->execute()
#5 .../vendor/laravel/framework/src/Illuminate/Console/Command.php(100): Symfony\Component\Console\Command\Command->run()
#6 .../vendor/symfony/console/Symfony/Component/Console/Application.php(889): Illuminate\Console\Command->run()
#7 .../vendor/symfony/console/Symfony/Component/Console/Application.php(193): Symfony\Component\Console\Application->doRunCommand()
#8 .../vendor/symfony/console/Symfony/Component/Console/Application.php(124): Symfony\Component\Console\Application->doRun()
#9 .../artisan(59): Symfony\Component\Console\Application->run()
#10 {main}
Я не знаю в чем проблема. Есть идеи, ребята ???
Спасибо
Редактировать:
Ответ @ceejayoz мне очень помог. я работал на неправильном пути. но главная проблема была @
, если ceejayoz
не показывал мне, что, может быть, я собирался потратить гораздо больше времени, чтобы выяснить это. если бы был способ принять два ответа, я бы с радостью принял ceejayoz
также. Благодарю.
Оригинал:
Наконец я решил отрезать начальный @ из строки. поэтому я использовал это:
if(strpos($message, "@") === 0){
$message = substr($message, 1);
}
Я не нашел решения, поэтому я использовал этот путь. если у вас есть другое решение, пожалуйста, напишите.
Ваша проблема в том, что сообщение начинается с @
, cURL обрабатывает любой параметр, начинающийся с @
в POST
запрашивает имя файла и пытается загрузить и отправить содержимое файла этих данных в качестве этого параметра. Это очень полезно для таких вещей, как загрузка файлов, но проблема в вашей ситуации.
Вы должны быть в состоянии исправить это, обернув FacebookRequest
параметры с http_build_query
вот так:
try {
$session = new FacebookSession($page_token);
$session->validate();
(new FacebookRequest($session, 'POST', '/' . $id . '/feed', http_build_query(array(
'message' => $message
))))->execute();
} catch(FacebookRequestException $e) {
.....
}