首页 > 解决方案 > Facebook Graph API v3.1 开发人员的访问令牌权限限制

问题描述

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

提醒:Graph API v2.7 将于 2018 年 10 月 5 日弃用。请使用API 升级工具了解这可能对您的应用程序有何影响。有关更多详细信息,请参阅更改日志

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

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

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

<?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"}}

现在我的问题是我可以从哪里允许我的应用程序获得这些权限,因为我允许的地方没有看到这些名称(publish_to_groups等) manage_pagespublish_pages如上面最后一个屏幕截图所示。

注意:我现在创建的所有内容和代码,所以我需要使用新发布的 API 3.1 的解决方案。

更新:

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

在此处输入图像描述

标签: phpfacebookfacebook-graph-apifacebook-php-sdk

解决方案


我尝试了很多东西,然后我在 Facebook 开发人员指南上发现,在新的更新之后,如果应用程序上线,没有人可以获得以下所有显示的权限。要在使您的应用程序上线后获得所有这些权限,您必须申请审查权限,否则您可以在开发模式下自由获得所有权限,但这仅适用于您。

在此处输入图像描述

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

在此处输入图像描述

您只需通过关闭实时模式将您的应用程序置于开发模式,如下图和上图所示。

在此处输入图像描述

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

注意:此令牌将发布在您的主页上,您只能看到您的应用程序,因为您的应用程序未上线,因此您的应用程序完成的每项活动都仅供您使用。


推荐阅读