所以我一直在试图让这项工作撕裂我的头发。我一直在堆栈溢出,查看现有问题并发现:Facebook: Post on Page as Page issue (access token / php)但它似乎仍然无法解决我的问题。
我每天都尝试使用cron作业发布到我的Facebook页面。我在验证时遇到问题。这是我的代码:
//Post to Facebook
//Variables
$app_id = "...";
$app_secret = "...";
$page_id = "...";
$my_url = "http://.../";
$access_token = "taken from page access token (developers.facebook.com/tools/explorer/)";
//Create the facebook object
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
'cookie' => true
));
//Get the access token using Facebook Graph API
//This gives permission to post to the wall
$token_url="https://graph.facebook.com/oauth/access_token?client_id=" . $app_id
. "&client_secret=" . $app_secret
. "&code=" . $access_token
. "&redirect_uri=" . $my_url;
$response = file_get_contents($token_url);
$params = null;
parse_str($response, $params);
$user_access_token = $params['access_token'];
//Get a list of pages and loop through
//If one matches one in the variables above, that's the one
//We're posting to
$attachment_1 = array(
'access_token' => $user_access_token
);
$result = $facebook->api("/me/accounts", $attachment_1);
foreach($result["data"] as $page) {
if($page["id"] == $page_id) {
$page_access_token = $page["access_token"];
break;
}
}
//Write to the Page wall
try {
$attachment = array(
'access_token' => $page_access_token,
'message'=> "Hello World"
);
$result = $facebook->api('/me/feed','POST', $attachment);
} catch(Exception $e) {
//Send me an email
...
mail($to, $subject, $message, $headers);
}
如果我在浏览器中访问脚本(我假设它正在使用我的facebook会话),但是当它被cron作业触发时,这是有效的。
我真的很感激任何帮助。感谢。
答案 0 :(得分:4)
//Get the access token using Facebook Graph API
//This gives permission to post to the wall
如果您已经有一个页面访问令牌,那么此步骤是错误的 - 它是用于交换Auth对话框传回给您的应用程序以获取用户访问令牌的代码。
但是,由于您已经拥有了页面访问令牌,因此可以跳过该步骤(从上述注释到“//Write to the Page wall
”)。
您所要做的就是在API调用中使用您的页面访问令牌,而不是您现在提供的用户访问令牌。