使用Facebook API 5.0 PHP获取页面访问令牌

使用Facebook API 5.0 PHP获取页面访问令牌,facebook,facebook-graph-api,facebook-php-sdk,Facebook,Facebook Graph Api,Facebook Php Sdk,我需要在Facebook页面上发布消息。具体来说,我想通过cron发布 以下是API文档所说的: 页面访问令牌–这些访问令牌与用户访问令牌类似,只是它们为读取、写入或修改属于Facebook页面的数据的API提供权限。要获取页面访问令牌,首先需要获取用户访问令牌并请求“管理页面”权限。一旦拥有用户访问令牌,就可以通过Graph API获得页面访问令牌 如何在没有页面回调的情况下获得用户访问和页面访问令牌?这是可能的吗?我只有JavaScript代码,但是一旦你有了访问令牌,你就可以得到可以由给定

我需要在Facebook页面上发布消息。具体来说,我想通过
cron
发布

以下是API文档所说的:

页面访问令牌–这些访问令牌与用户访问令牌类似,只是它们为读取、写入或修改属于Facebook页面的数据的API提供权限。要获取页面访问令牌,首先需要获取用户访问令牌并请求“管理页面”权限。一旦拥有用户访问令牌,就可以通过Graph API获得页面访问令牌


如何在没有页面回调的情况下获得用户访问和页面访问令牌?这是可能的吗?

我只有JavaScript代码,但是一旦你有了访问令牌,你就可以得到可以由给定用户管理的页面。这将包含其中每一个的页面访问令牌:

jQuery.ajax({type: "GET",
                url: "https://graph.facebook.com/v2.2/me/accounts?access_token=" + userToken,
                async: false,
                data: jsonRequest,
                dataType: "json",
                cache: false,
                success: function(data)
                {
返回的数据如下所示:

{
  "data": [
    {
      "access_token": "CAACni8TcBB0B...cZBJfwZDZD",
      "category": "Computers/Technology",
      "name": "abc",
      "id": "...",
      "perms": [
        "ADMINISTER",
        "EDIT_PROFILE",
        "CREATE_CONTENT",
        "MODERATE_CONTENT",
        "CREATE_ADS",
        "BASIC_ADMIN"
      ]
    },
    {
      "access_token": "CAA...ZDZD",
      "category": "App Page",
      "name": "xyz",
      "id": "....",
      "perms": [
        "ADMINISTER",
        "EDIT_PROFILE",
        "CREATE_CONTENT",
        "MODERATE_CONTENT",
        "CREATE_ADS",
        "BASIC_ADMIN"
      ]
    }
  ],

访问令牌
是您的页面令牌。您可以轻松地将上述请求转换为PHP。

您需要的是扩展页面标记,它永远有效。你会得到这样一个:

  • 使用
    manage_pages
    权限(以及
    publish_pages
    如果您以后想发布为页面)进行授权,以获取用户令牌
  • 扩展用户令牌
  • /me/accounts?fields=access\u token
    与扩展用户令牌一起使用,以获取包含扩展页面令牌的所有页面的列表,或使用
    /Page id?fields=access\u token
    为特定页面获取扩展页面令牌
有关所有令牌以及如何扩展用户令牌的信息:

PHP API V5

下面的代码在24小时的挠头后对我有效。。。。希望这对您有所帮助,如果您需要此代码,您应该已经完成了前两个步骤

  • 应该登录到我使用的facebook
    getRedirectLoginHelper
  • 在回拨文件
    $\u session['fb\u access\u token']=(string)$accessToken上使用接收到的用户访问令牌设置会话变量


  • 您可以通过以下方式获取页面令牌:

    $response = $fb->get('/'.$pageId.'?fields=access_token', (string)$accessToken);
    $json = json_decode($response->getBody());
    $page_token = $json->access_token;
    $response = $fb->post('/'.$pageId.'/feed', $fbData, $page_token);
    

    你是想从cron还是PHP来做这件事?@NateBarbettini即使使用cron,它也可以是PHP,这不是相互排斥@AxelAmthor很公平,我忘记了。确切地说,它不是Linux CRON,而是PHP程序中的计划任务。但是就像NateBarbettini说的,我们可以用PHP脚本做一个CRON,所以在我的例子中也是一样。非常感谢你的回复。我了解如何获取页面访问令牌。但是我怎么才能得到用户令牌呢?我想我找到了:1)从中获取访问令牌:2)从中获取长寿访问令牌3)使用你的链接获取永久访问令牌这就是我要寻找的答案!谢谢。请理解,我使用的是一个php文件而不是wp插件,这在2016年对我有效,2017年2月对另一个人有效,因此,请检查文档并比较您的代码,而不是复制粘贴代码!
    $response = $fb->get('/'.$pageId.'?fields=access_token', (string)$accessToken);
    $json = json_decode($response->getBody());
    $page_token = $json->access_token;
    $response = $fb->post('/'.$pageId.'/feed', $fbData, $page_token);