我正在尝试使用Facebook PHP SDK更新Facebook状态。 我已使用以下代码多次更新了我的状态:
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
令人惊讶的是,已经成功地从我的localhost更新了这个状态。但在生产服务器中它会抛出错误。 错误是:
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}
我不知道问题是什么。任何想法的人??? 感谢
答案 0 :(得分:1)
修改:
@ceejayoz的回答对我很有帮助。我正在走错路。但主要问题是@
。如果ceejayoz
没有告诉我这一点,我可能会花更多的时间来弄明白。如果有办法接受两个答案,我也愿意接受ceejayoz
。感谢。
<强>原始强>
最后我决定从字符串中切断起始@。所以我用过这个:
if(strpos($message, "@") === 0){
$message = substr($message, 1);
}
我没有找到解决方案,所以我使用了这条路径。如果您有任何其他解决方案,请发布。
答案 1 :(得分:0)
您的问题是该邮件以@
开头。 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) {
.....
}