授权Facebook粉丝页面进行状态更新

时间:2010-01-19 22:30:16

标签: php session facebook

我可以使用以下代码更新PROFILE墙上的状态:

require_once 'facebook-platform/php/facebook.php';
$facebook = new Facebook('APP API KEY','APP SECRET KEY');
$user_id = 'MY USER ID';
$facebook->api_client->users_setStatus('This is a new status');

...授权使用此地址后: http://facebook.com/authorize.php?api_key=MYAPPAPIKEY&v=1.0&ext_perm=publish_stream

但是,此代码无法更新我的Facebook PAGE Wall上的状态。是否有其他参数可以添加到authorize.php网址以指定授权PAGE而不仅仅是我的个人资料?

或者,有没有更好的方法来发布粉丝页面墙的更新?

谢谢!

2 个答案:

答案 0 :(得分:21)

我通过咨询Facebook desktop application documentation解决了这个问题(即使这是一个Web应用程序)。

我首先必须使用此网址授权离线访问(替换“MYAPIKEY”): http://www.facebook.com/login.php?api_key=MYAPIKEY&connect_display=popup&v=1.0&next=http://www.facebook.com/connect/login_success.html&cancel_url=http://www.facebook.com/connect/login_failure.html&fbconnect=true&return_session=true&session_key_only=true&req_perms=read_stream,publish_stream,offline_access

然后,我需要使用此url向PAGE授予'publish_stream'权限(替换'MYAPIKEY'和'THEPAGEID'): http://www.facebook.com/connect/prompt_permissions.php?api_key=MYAPIKEY&v=1.0&next=http://www.facebook.com/connect/login_success.html?xxRESULTTOKENxx&display=popup&ext_perm=publish_stream&enable_profile_selector=1&profile_selector_ids=THEPAGEID

然后,我可以使用以下代码发布到粉丝页面墙:

require_once 'facebook-platform/php/facebook.php';
$facebook = new Facebook(MYAPIKEY, MYAPISECRET);
try{
    $facebook->api_client->stream_publish('INSERT_STATUS_HERE',null,null,null,'THEPAGEID');
}catch(Exception $o ){
    print_r($o);
}

答案 1 :(得分:0)

基于以上所述,我在图API授权网址上尝试了几个查询字符串参数,看起来有效:

https://graph.facebook.com/oauth/authorize?client_id=[APP_ID]&redirect_uri=[REDIRECT_URL]&scope=publish_stream&enable_profile_selector=1&profile_selector_ids=[PAGE_IDS]

编辑:没关系,以上显示所有UI正确,但仍然得到“(#200)用户没有授权应用程序执行此操作”错误---很明显它不起作用,因为访问令牌包含我的USER ID,但不包含页面的ID。