PHP cURL : Post 作为页面到 Facebook 页面
PHP cURL : Post to Facebook Page as Page
我尝试了一个示例代码 post 到 Facebook 页面。但它是 posting 作为我自己。我包括了 Page_access_token.
授予的权限是 'manage_pages' 和 'publish_action'。
这是我的代码:
<?php
$page_id='xxxx';
$page_access_token='cccc';
$url="https://graph.facebook.com/{$page_id}/feed?message=Hello&access_token=".$page_access_token;
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_REFERER, '');
curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$value = json_decode(curl_exec($ch));
$var_dump($value);
?>
我哪里错了?我该如何解决?
我希望它被 posted 作为页面。谢谢
编辑:
我的新代码 /$PAGE_ID?fields=access_token:
<?php
$page_id='xxx';
$message='helloworld';
$url="https://graph.facebook.com/v2.3/{$page_id}?fields=access_token";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_REFERER, '');
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($curl, CURLOPT_AUTOREFERER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $message);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
$json = json_decode(curl_exec($curl));
var_dump($json);
?>
这returns一个错误:
object(stdClass)#1 (1) {
["error"]=>
object(stdClass)#2 (3) {
["message"]=>
string(64) "(#210) A page access token is required to request this resource."
["type"]=>
string(14) "OAuthException"
["code"]=>
int(210)
}
}
我哪里错了?
我需要从图 API 资源管理器创建页面_access_token 吗?还是上面的 url 就够了?我应该如何使用 User_access_token 来获取 page_access_token ?
如果它被 post 编辑为您自己,则您没有使用页面令牌。调试您的令牌并查看是否列出了页面 ID - 这就是您知道它是页面令牌的方式:https://developers.facebook.com/tools/debug/
顺便说一句,您应该使用新的 publish_pages
权限 post 页面:https://developers.facebook.com/docs/apps/changelog#v2_3_changes
关于如何获取访问令牌的信息:
<?php
$page_id='xxx';
$message='helloworld';
$access_token = "XXXXXXXXXXXXXXXXXXXXX";
$url="https://graph.facebook.com/v2.3/{$page_id}/feed/?access_token=".access_token ."&message=".urlencode(message);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_REFERER, '');
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($curl, CURLOPT_AUTOREFERER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $message);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
$json = json_decode(curl_exec($curl));
var_dump($json);
?>
我尝试了一个示例代码 post 到 Facebook 页面。但它是 posting 作为我自己。我包括了 Page_access_token.
授予的权限是 'manage_pages' 和 'publish_action'。 这是我的代码:
<?php
$page_id='xxxx';
$page_access_token='cccc';
$url="https://graph.facebook.com/{$page_id}/feed?message=Hello&access_token=".$page_access_token;
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_REFERER, '');
curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$value = json_decode(curl_exec($ch));
$var_dump($value);
?>
我哪里错了?我该如何解决? 我希望它被 posted 作为页面。谢谢
编辑: 我的新代码 /$PAGE_ID?fields=access_token:
<?php
$page_id='xxx';
$message='helloworld';
$url="https://graph.facebook.com/v2.3/{$page_id}?fields=access_token";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_REFERER, '');
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($curl, CURLOPT_AUTOREFERER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $message);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
$json = json_decode(curl_exec($curl));
var_dump($json);
?>
这returns一个错误:
object(stdClass)#1 (1) {
["error"]=>
object(stdClass)#2 (3) {
["message"]=>
string(64) "(#210) A page access token is required to request this resource."
["type"]=>
string(14) "OAuthException"
["code"]=>
int(210)
}
}
我哪里错了?
我需要从图 API 资源管理器创建页面_access_token 吗?还是上面的 url 就够了?我应该如何使用 User_access_token 来获取 page_access_token ?
如果它被 post 编辑为您自己,则您没有使用页面令牌。调试您的令牌并查看是否列出了页面 ID - 这就是您知道它是页面令牌的方式:https://developers.facebook.com/tools/debug/
顺便说一句,您应该使用新的 publish_pages
权限 post 页面:https://developers.facebook.com/docs/apps/changelog#v2_3_changes
关于如何获取访问令牌的信息:
<?php
$page_id='xxx';
$message='helloworld';
$access_token = "XXXXXXXXXXXXXXXXXXXXX";
$url="https://graph.facebook.com/v2.3/{$page_id}/feed/?access_token=".access_token ."&message=".urlencode(message);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_REFERER, '');
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($curl, CURLOPT_AUTOREFERER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $message);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
$json = json_decode(curl_exec($curl));
var_dump($json);
?>