2012-01-19 228 views
3

我想解决如何发布到Facebook页面墙,当我的应用程序作为不同的Facebook用户(谁不是页面管理员)。如何发布到Facebook页面(如何获取页面访问令牌+用户访问令牌)

我得到一个范围,而测试的错误消息: 异常:200:用户未授权应用程序来执行此操作

页管理员访问应用程序,并接受了以下权限:publish_stream, manage_pages,offline_access

下面是代码我打算使用:

// Insert Page Administrators ID here 
// This user is not the same user that is currently logged in and using the app 
// This user is the page administrator who has authorised: 
// - manage_pages 
// - offline_access 
// - publish_stream 

$user_id = '123456789'; 

// Insert Page ID here 
$page_id = '123456789'; 

$accounts = $facebook->api('/'.$user_id.'/accounts'); 

foreach($accounts['data'] as $account) 
{ 
    if($account['id'] == $page_id) 
    { 
    $page_access_token = $account['access_token']; 
    echo "<p>Page Access Token: $page_access_token</p>"; 
    } 
} 

// publish to the wall on your page 
try 
{ 
    $result = $facebook->api(array("uid" => $page_id, 
            "method" => "stream.publish", 
            "access_token" => $page_access_token, 
            "message" => $message,)); 
} 
catch (FacebookApiException $e) 
{ 
    error_log('FB Error: Could not post on Page Wall. Page ID: ' . $page_id); 
    error_log('FB Error Message: ' . $e); 
} 

注:有可能在上面的代码PHP错误,正如我刚才拼接它的飞行,但它不是SO 3 M这就是我需要纠正的PHP错误,但更多的是我理解我如何去做这个过程。

问题: 如果没有用于页面管理员的活动用户访问令牌,我无法访问$ user_id/accounts信息。

我试图达到的最终结果是: 1.)一个普通的FB用户转到应用程序并提交一个表格 2.)该应用程序在FB页面墙上发布消息,该消息不是由FB用户拥有,但之前已被页面管理员授权,具有以下权限manage_pages,publish_stream和offline_access

Q1。由于页面管理员已经接受了适当的权限,为什么我不能生成活动的用户访问令牌,而实际的页面管理员用户没有登录到网站? Q2302。有没有办法,我可以得到页面管理员user_id相当于/ $ user_id /帐户,当作为一个不同的用户登录到Facebook(这就是为什么我不使用/我/帐户)?

Q3。请确认我对需要页面访问令牌发布到页面墙的理解是正确的(还是需要页面管理员的用户access_token - 请参阅Q1)?

Q4。任何人都可以获得每种access_token实际可以访问的资源吗?

如果您需要更多信息,请让我知道。 我花了最后几天的工作,我卡住了。

谢谢!

回答

3
  1. 你可以要求manage_pages页面管理员与offline_access一起。我在我的制作应用程序中这样做是为了能够将预定发布贴到网页的墙上。

  2. 没有。不可能。这就是要求权限是关于什么的。为什么不是每个人都能管理其他人的页面。如果您可以管理任何人的网页,而您没有授予您访问权限,您可以想象吗?

  3. 要作为页面发布到页面,您需要一个页面访问令牌。要以用户身份发布到页面的墙上,您需要一个用户访问令牌。

  4. 是的,请参阅:https://developers.facebook.com/docs/reference/api/permissionshttps://developers.facebook.com/docs/authentication/

如果您对其中任何一个问题,请不要启动一个新的问题。对于一个用户遇到4个问题,然后被问到每个问题的后续问题,这对于用户来说并不公平。

+0

1.我已经要求此权限和可以确认页面管理员有这个为我的应用程序启用了许可 2.我了解需要权限,但我的应用程序将安装在客户Facebook页面上,并且随着用户创建新项目,我希望在客户Facebook页面墙上发布信息。因此,当试图发布消息时,使用该应用程序的用户不是Page管理员,而只是一个日常用户。 – James

+0

3.感谢您澄清页面访问令牌用途的目的。这听起来好像我应该能够使用当前用户访问令牌发布到页面墙(由页面管理员拥有 - 已批准相应权限 - manage_pages/offline_access),但我得到身份验证错误(我将跟踪下载并更新我的文章) 4.我已经阅读了这些页面,似乎没有得到我需要的答案的运气。 错误日志:未捕获异常:240:需要指定有效用户 – James

+0

如果您对其中任何一项有任何疑问,请发起一个新问题。对于一个用户遇到4个问题,然后被问到每个问题的后续问题,这对于用户来说并不公平。 – DMCS

2

我已经在Django完成:

步骤获得Page_access_token:

facebook_page_id=360729583957969 
graph = GraphAPI(request.facebook.user.oauth_token.token)      
page_access_token=graph.get(facebook_page_id+'?fields=access_token') 

这样,您就可以得到页面访问令牌。

您可以检查FB上GraphAPIexplorer这件事:

http://developers.facebook.com/tools/explorer 
GET URL: fb_page_id?fields=access_token 

例如:360729583957969?fields=access_token 会给你page_access_token

相关问题