获取页面ID和访问令牌作为应用程序发布到粉丝页面

时间:2012-06-06 23:28:02

标签: php facebook-graph-api post facebook-page

经过一天谷歌和大量测试目前的情况后,鉴于facebook api中offline_access请求的贬值,我无法找到明确的答案。

我想要实现的是将应用程序的粉丝页面墙更新为应用程序本身,并使用我的主站点生成的RSS源的输出(我不太担心在此阶段读取/解析RSS部分,我想我已经破解了)。目前的情况我可以发布到粉丝专页墙,但帖子看起来好像来自我的个人资料(粉丝专页管理员)。

我创建的应用程序仅供我使用,目的是写入我的粉丝页面墙。我尝试过使用第三方工具(RSS Graffiti / Twitter Feed),但他们只是不符合我的要求,所以我试着自己写点东西。

到目前为止我所拥有的PHP只是从fb开发人员中心示例中剔除,就像我说我可以成功发布到墙上但仅作为我自己。

我计划设置一个CRON作业来执行脚本并运行我的RSS源并更新fb粉丝页面,如果有新的东西。鉴于此,我将不会从运行它的机器(justhost服务器)登录到fb。

此外,我似乎无法调用http get,因为我认为它在PHP配置中被禁用(我无法在共享主机上更改)。因此,当我试图获取我管理的页面和应用程序数组以便查找时,我得到了一个'调用未定义的函数http_get()',因此我坚持使用authenticating as a page作为fb dev中心帮助指南中的点。我的'页面访问令牌'。我曾尝试使用curl来返回这个但是我无法正确地称赞它,因为当我使用以下代码转出响应时,我只得到“资源(4)类型(curl)”:

//get user access token
$access_token = $facebook->getAccessToken();

//get page access token
$response  = curl_init("https://graph.facebook.com/me/accounts?access_token=".$access_token);
var_dump($response);

即使我有了这个并且可以在这个实例中使用它,我很困惑这个令牌expirse会发生什么,以及如何更新它而不必每2小时或60年编辑一次这个脚本令牌过期的日子。

任何人都可以通过CRON作业从远程服务器上的脚本运行时获得此页面访问令牌然后保持活动状态的任何帮助都将非常感激。

这是我到目前为止的代码:

<?php

require '../src/facebook.php';

// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId'  => 'XXXHIDDENTHISXXX',
'secret' => 'XXXHIDDENTHISXXX',
'cookie' => true
));

// Get User ID
$user = $facebook->getUser();



if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}

// Login or logout url will be needed depending on current user state.
$params = array(
'scope' => 'publish_stream',
'redirect_uri' => 'http://autos.sevende.com.gt/rss_to_facebook/pages/'
);

if ($user) {
$logoutUrl = $facebook->getLogoutUrl($params);
} else {

$loginUrl = $facebook->getLoginUrl($params);

}

//get user access token
$access_token = $facebook->getAccessToken();

//get page access token
$response  = curl_init("https://graph.facebook.com/me/accounts?access_token=".$access_token);
var_dump($response);

https://graph.facebook.com/me/accounts?access_token=USER_ACCESS_TOKEN

//set fanpage_id
$page_id = '234830586618763';

$attachment = array(

'link' => 'http://autos.sevende.com.gt/listing/565/');

$result = $facebook->api('/'.$page_id.'/feed?access_token='.$access_token, 'post', $attachment);


?>

1 个答案:

答案 0 :(得分:1)

不,你不能发布'as'应用程序。

您可以作为用户或页面发布,但不能作为应用程序发布。执行这两项操作的方法都有详细记录,上面的代码接近“作为页面发布”的说明,但