我的Facebook用户是几个Facebook页面的管理员。我想要做的是自动从外部php网站发布其中一个页面的feed。例如,当网站上发生一些有趣的事情时,将通知发布到页面的新闻流中。
我在facebook上创建了一个应用程序,我正在使用php fb api:
//actual values redacted, obviously
$appId = 'my_app_id';
$pageId = 'my_page_id';
$secret = 'my_app_secret';
//First i'm getting the authtoken
$args = array(
'grant_type' => 'client_credentials',
'client_id' => $appid,
'client_secret' => $secret
);
$ch = curl_init();
$url = 'https://graph.facebook.com/oauth/access_token';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
$data = curl_exec($ch);
//this comes back from facebook like auth_token=xxxxx
$token = str_replace("access_token=", "", $data); //remove 'auth_token='
$facebook = new Facebook(array(
'appId' => $appId,
'secret' => $secret,
'cookie' => false,
'domain' => 'mydomain.net'
));
$facebook->api("/$pageId/feed", 'post', array(
'access_token' => $token,
'link' => 'http://www.example.com'
));
这连接到Facebook并尝试发布到Feed,但未能说:
(#200) The user hasn't authorized the application to perform this action
所以我的问题是,我应该如何授权应用程序发布到Feed?我在应用程序上看不到任何设置,似乎无法“添加”页面的权限。我完全迷失在这一点上,facebook的文档没什么帮助。
任何帮助都会非常感激。我已经失去了一整天。
答案 0 :(得分:0)
尝试从此数组中删除$ token参数
$facebook->api("/$pageId/feed", 'post', array(
**'access_token' => $token,**
'link' => 'http://www.example.com'
));
并在POST API调用之前以这种方式设置令牌
$facebook->setAccessToken($token);
让我知道它是怎么做的
答案 1 :(得分:0)
所以我的问题是,我应该如何授权应用程序发布到Feed?我没有在应用上看到任何设置,似乎无法向页面“添加”权限。
您必须首先获得访问令牌 - 用户访问令牌(长期存在令牌在60天后过期,因此您必须返回定期对您的应用进行续订)或页面访问令牌(默认情况下不会过期)。而且您必须要求发布必要的权限(代表用户行事时)。
要获得它们,您必须完成身份验证流程。所有细节都在这里描述:https://developers.facebook.com/docs/authentication/
如果您对使用API不太熟悉可能也会有所帮助,可能是Graph API Explorer - 您可以“玩”,提出不同类型的请求,查看结果或结果错误是。它可以让你在那里生成用户访问令牌(让你知道你自己应该在自己的应用程序中做些什么)。