针对开发人员的Facebook Graph API v3.1访问令牌权限限制

时间:2018-09-22 13:15:48

标签: php facebook facebook-graph-api facebook-php-sdk

您知道Facebook将API升级到了V3.1,现在缓慢地淘汰了旧的API和应用程序,因此我们必须在那里迁移新的API,在那里他们做出了一些艰难的决定,这在SPAM网站上是件好事,但对开发人员也很困难。

提醒:将于2018年10月5日弃用Graph API v2.7。请使用API Upgrade Tool了解这可能会对您的应用产生什么影响。有关更多详细信息,请参见changelog

现在,我创建了一个具有以下设置的新FB应用程序,如下面的屏幕快照所示,以在我自己的页面上发布而不是个人资料,但是也出现了下面提到的错误。

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

然后,我使用下面的代码在我自己的页面上发布了自己的页面,该页面是我创建该应用程序的同一帐户的所有者。

<?php
$page_access_token = 'GENERAL_ACCESS_TOKEN';
$page_id = 'OWN_PAGE_ID';
// From https://developers.facebook.com/tools/explorer

$data['message'] = "Text_Message";
//$data['picture'] = "http://www.example.com/image.jpg";
//$data['link'] = "http://www.example.com/";
//$data['caption'] = "Caption";
//$data['description'] = "Description";

$data['access_token'] = $page_access_token;
$post_url = 'https://graph.facebook.com/'.$page_id.'/feed';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $post_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$return = curl_exec($ch);
echo $return;
curl_close($ch);
?>

现在,当我运行较高代码时,出现以下错误...

{"error":{"message":"(#200) Requires either publish_to_groups permission and app being installed in the group, or manage_pages and publish_pages as an admin with sufficient administrative permission","type":"OAuthException","code":200,"fbtrace_id":"XXXXXXXXX"}}

现在我的问题是,从哪里可以让我的Apps拥有这些权限,因为我所允许的所有人都没有看到这些名称(publish_to_groupsmanage_pagespublish_pages等),如图所示上面的最后一个屏幕截图。

注意:我现在创建并编写了所有代码,因此我需要使用新发布的API 3.1的解决方案。

更新:

我的朋友告诉我,如下面的屏幕截图所示,允许所有权限使我的代码正常工作,但我无法在我的应用中查看这些权限。我需要这些如何获得它们?

enter image description here

2 个答案:

答案 0 :(得分:1)

在我看来,您正在使用用户访问令牌。 要获取页面访问令牌,您应该调用端点:

https://graph.facebook.com/v3.1/{user-id or me}/accounts

获取页面列表和每个页面的访问令牌。

或者:

https://graph.facebook.com/v3.1/{page-id}?fields=access_token

如果您已经知道要发布的页面。

获取页面访问令牌后,可以调用feed端点。

在这里看看: https://developers.facebook.com/docs/pages/access-tokens

答案 1 :(得分:1)

我尝试了很多事情,然后在Facebook开发人员指南上发现它,在进行新的更新后,如果这些应用程序上线,则无法获得以下显示的所有许可。要在启用您的应用后获得所有这些权限,您必须申请权限进行审查,否则您可以在开发模式下免费获得所有权限,但这仅对您有用。

enter image description here

您知道要获得自己的应用程序中的所有权限供您自己使用,无需查看您的应用程序或任何内容即可获得它。您可以在下面看到“应用程序的常规设置”。

enter image description here

您只需要通过关闭实时模式(如以下屏幕快照和上部屏幕截图所示)即可将应用程序置于开发模式。

enter image description here

完成此操作后,只需转到Graph API Explorer并单击“获取令牌”按钮,然后选择“获取用户访问令牌”,您将在此处获得如本答案的第一个屏幕截图所示的弹出窗口,您可以在其中选择所需的范围,然后单击“获取访问令牌”。它将引发一个POPUP,它将需要您的许可才能允许它,然后它将返回您访问令牌。 (You Can Extend Your Access Token To 60 Days

注意:仅由于您的应用未启用,此令牌才会发布在您的页面上,因此您的应用所做的每项活动仅适合您。