Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 以编程方式发布到facebook页面流_Php_Facebook_Api - Fatal编程技术网

Php 以编程方式发布到facebook页面流

Php 以编程方式发布到facebook页面流,php,facebook,api,Php,Facebook,Api,我的facebook用户是几个facebook页面的管理员。我试图做的是从外部php网站自动发布到其中一个页面的提要。例如,当站点上发生有趣的事情时,向页面的新闻流发布通知 我在facebook上创建了一个应用程序,我使用的php fb api如下: //actual values redacted, obviously $appId = 'my_app_id'; $pageId = 'my_page_id'; $secret = 'my_app_secret'; //First i'm ge

我的facebook用户是几个facebook页面的管理员。我试图做的是从外部php网站自动发布到其中一个页面的提要。例如,当站点上发生有趣的事情时,向页面的新闻流发布通知

我在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并尝试发布到提要,但未能说明:

(#200) The user hasn't authorized the application to perform this action
所以我的问题是,我应该如何授权应用程序发布到提要?我在应用程序上看不到任何设置,而且似乎无法向页面“添加”权限。在这一点上我完全迷失了方向,facebook的文档也帮不上什么忙


任何帮助都将不胜感激。我为此损失了整整一天。

请尝试从此数组中删除$token参数

$facebook->api("/$pageId/feed", 'post', array(           
    **'access_token' => $token,**
    'link' => 'http://www.example.com'
));
并在POST API调用之前以这种方式设置令牌

$facebook->setAccessToken($token);
让我知道它是怎么做的

所以我的问题是,我应该如何授权应用程序发布到提要?我在应用程序上看不到任何设置,而且似乎无法向页面“添加”权限

您必须首先获得一个访问令牌——要么是一个用户访问令牌(长期使用的令牌在60天后过期,因此您必须定期返回应用程序进行续订),要么是一个页面访问令牌(默认情况下不会过期)。您必须请求必要的权限才能发布(代表用户时)

要获得它们,您必须通过身份验证流程。所有细节如下所述:


如果您还不太熟悉API的使用,那么也可能有帮助的是–在那里您可以“玩转”,提出不同类型的请求,查看结果或错误是什么。它允许您在那里生成用户访问令牌(让您知道自己必须在应用程序中执行什么操作)。

与以前的结果相同,它抱怨用户没有授权应用程序执行此操作