使用 cURL PHP 发布到 Facebook 用户的墙上

Posted

技术标签:

【中文标题】使用 cURL PHP 发布到 Facebook 用户的墙上【英文标题】:Post to a Facebook user's wall with cURL PHP 【发布时间】:2011-08-14 10:10:14 【问题描述】:

我正在存储 facebook 用户 ID 和访问令牌。我可以将这些信息发布到选定用户的墙上吗?可在此处找到以下代码:http://developers.facebook.com/docs/reference/api/post/ 我只是不确定如何用 php 运行它。

curl -F 'access_token=$accessToken' \
     -F 'message=Check out this funny article' \
     -F 'link=http://www.example.com/article.html' \
     https://graph.facebook.com/$facebookid/feed

【问题讨论】:

用PHP的cURL API怎么样? 我怀疑这是否可行,但我会尝试 :) 【参考方案1】:
$attachment =  array(
'access_token' => $token,
'message' => $msg,
'name' => $title,
'link' => $uri,
'description' => $desc,
'picture'=>$pic,
'actions' => json_encode(array('name' => $action_name,'link' => $action_link))
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'https://graph.facebook.com/fbnameorid/feed');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  //to suppress the curl output 
$result = curl_exec($ch);
curl_close ($ch);

【讨论】:

每当我从浏览器运行此代码时,它都能正常工作。但是当我在控制台中运行它时,我得到 "error":"message":"(#200) The user has not authorized the application to perform this action","type":"OAuthException","code": 200 感谢并添加我想出的内容:从您的服务器上传图片,将请求 url 更改为:graph.facebook.com/fbnameorid/photos 并添加一个名为 'file' 的数组项,其值为 '@'。 [文件路径]【参考方案2】:

使用Facebook SDK。这比自己处理 CURL 要好得多。

【讨论】:

也许您可以注意到 Facebook SDK 中的哪些特定函数可以替换此代码,而不是指向整个 SDK。【参考方案3】:

我尝试了 cURL 方法,但我不知道应该将 $action_name 和 $action_link 更改为什么。

<?php
require_once("facebooksdk/facebook.php");
require_once('config.php');

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

$access_token = $facebook->getAccessToken();
echo $access_token;
$msg = "testmsg";
$title = "testt";
$uri = "http://somesite.com";
$desc = "testd";
$pic = "http://static.adzerk.net/Advertisers/d18eea9d28f3490b8dcbfa9e38f8336e.jpg";
$attachment =  array(
'access_token' => $access_token,
'message' => $msg,
'name' => $title,
'link' => $uri,
'description' => $desc,
'picture'=>$pic,
'actions' => json_encode(array('name' => $action_name,'link' => $action_link))
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'https://graph.facebook.com/me/feed');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  //to suppress the curl output
$result = curl_exec($ch);
curl_close ($ch);


?>

我成功获得了访问令牌,所以我只需要这两个参数。

【讨论】:

只需添加类似:` $action_name = 'Register Now'; $action_link = 'example.com/register';`

以上是关于使用 cURL PHP 发布到 Facebook 用户的墙上的主要内容,如果未能解决你的问题,请参考以下文章

Facebook 需要 CURL PHP 扩展错误

使用 cURL PHP / Graph API 在 Facebook 中回复评论

Facebook使用cURL和PHP登录

PHP 使用PHP CURL更新您的Facebook状态

用PHP CURL更新你的Facebook状态

Laravel 5.2 社交名媛 Facebook 登录 cURL 错误 60