【问题标题】:Get page access token with Facebook API 5.0 PHP使用 Facebook API 5.0 PHP 获取页面访问令牌
【发布时间】:2015-09-30 21:43:02
【问题描述】:

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

API 文档是这样说的:

页面访问令牌 - 这些访问令牌类似于用户访问令牌,不同之处在于它们向 API 提供读取、写入或修改属于 Facebook 页面的数据的权限。要获取页面访问令牌,您需要首先获取用户访问令牌并请求 manage_pages 权限。获得用户访问令牌后,您就可以通过 Graph API 获取页面访问令牌。

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

【问题讨论】:

  • 你是想从 cron 还是 PHP 来做?
  • @NateBarbettini 即使有 cron 也可以是 PHP,这不是互相排斥...?
  • @AxelAmthor 很公平,我忘了。
  • 没错,它不是 Linux CRON,而是 PHP 程序中的计划任务。但是就像 NateBarbettini 说我们可以用 PHP 脚本做一个 CRON 所以在我的例子中是一样的。

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


【解决方案1】:

你需要一个扩展页面令牌,它永远有效。你会得到一个这样的:

  • 使用manage_pages 权限(以及publish_pages,如果您想稍后发布为页面)进行授权,以获得用户令牌
  • 扩展用户令牌
  • /me/accounts?fields=access_token 与扩展用户令牌结合使用,以获取所有具有扩展页面令牌的页面的列表 - 或使用 /page-id?fields=access_token 获取特定页面的扩展页面令牌

关于所有令牌以及如何扩展用户令牌的信息:

【讨论】:

    【解决方案2】:

    PHP API V5

    经过 24 小时的头疼后,下面的代码对我有用....希望这对您有所帮助,如果您需要此代码工作,您应该完成前两个步骤

    1. 应该登录到我使用的 Facebook getRedirectLoginHelper
    2. 在回调文件$_SESSION['fb_access_token'] = (string) $accessToken; 上使用接收到的用户访问令牌设置会话变量

    $fbApp  = new Facebook\FacebookApp( 'xxx', 'xxx', 'v2.7' );
    $fb      = new Facebook\Facebook( array(
        'app_id' => 'xxx',
        'app_secret' => 'xxx',
        'default_graph_version' => 'v2.7'
    ) );
    $requestxx = new FacebookRequest(
        $fbApp,
        $_SESSION['fb_access_token'],//my user access token
        'GET',
        '/{page-id}?fields=access_token',
        array( 'ADMINISTER' )
    );
    $responset  = $fb->getClient()->sendRequest( $requestxx );
    $json           = json_decode( $responset->getBody() );
    $page_access    = $json->access_token;
    
    //posting to page   
    $requesty = new FacebookRequest(
        $fbApp,
        $page_access ,
        'POST',
        '/{page-id}/feed?message=Hello fans YYYYYYYYYYYYYYY'
    );
    $response = $fb->getClient()->sendRequest( $requesty );
    var_dump( $response );
    

    【讨论】:

    • 这就是我要找的答案!谢谢。
    • 请理解我使用了一个不在 wp-plugin 中的 php 文件进行了检查,这在 2016 年对我有用,在 2017 年 2 月对另一个人有用,因此请检查文档并比较,而不是复制粘贴代码你的代码!
    【解决方案3】:

    您可以通过这种方式获取页面令牌:

    $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);
    

    【讨论】:

      【解决方案4】:

      我只有 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"
            ]
          }
        ],
      

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-02
      • 2018-06-16
      • 1970-01-01
      • 2012-02-13
      • 1970-01-01
      相关资源
      最近更新 更多