如何使用FacebookPHPSDKV4和GraphAPI2.x以管理员的身份在facebook页面墙上发布帖子

如何使用FacebookPHPSDKV4和GraphAPI2.x以管理员的身份在facebook页面墙上发布帖子,php,api,facebook-graph-api,facebook-php-sdk,facebook-sdk-4.0,Php,Api,Facebook Graph Api,Facebook Php Sdk,Facebook Sdk 4.0,如何使用FacebookPHPSDKV4和GraphAPI2.x在Facebook页面墙上以页面管理员用户的身份发布帖子 我已经花了很多时间,但大部分文章都是旧的(比如老的Facebook PHP SDK),有点让人困惑 我已经想出了以下步骤 步骤1:将应用程序重定向到Facebook以记录管理员 步骤2:获取用户访问令牌(短期) 步骤3:通过交换短寿命令牌获得用户访问令牌(长寿命) 步骤4:获取页面访问令牌 你能解释一下我需要调用Facebook PHP SDK的哪些函数来完成上述步骤吗 或者

如何使用FacebookPHPSDKV4和GraphAPI2.x在Facebook页面墙上以页面管理员用户的身份发布帖子

我已经花了很多时间,但大部分文章都是旧的(比如老的Facebook PHP SDK),有点让人困惑

我已经想出了以下步骤

步骤1:将应用程序重定向到Facebook以记录管理员
步骤2:获取用户访问令牌(短期)
步骤3:通过交换短寿命令牌获得用户访问令牌(长寿命)
步骤4:获取页面访问令牌

你能解释一下我需要调用Facebook PHP SDK的哪些函数来完成上述步骤吗 或者你可以给我一些代码示例的url

如果我错了,请纠正我 谢谢你提前通知

==================================
注:

  • 我已经为app\u id和app\u secret创建了应用程序
  • 我已经创建了Facebook页面
  • 我正在使用Facebook PHP SDK 4
  • FacebookPHPSDK4使用GraphAPI2.x(我假设)
我有一个使用PHPSDK v4.0.x和Graph API v.x的例子

基本上,您可以通过执行以下操作获得页面访问令牌:

// get page access token
$access_token = (new FacebookRequest( $session, 'GET', '/' . $page_id,  array( 'fields' => 'access_token' ) ))
    ->execute()->getGraphObject()->asArray();

// save access token in variable for later use  
$access_token = $access_token['access_token'];
然后,您可以使用上面获得的访问令牌进行第二次API调用,将内容发布到给定页面:

// post to page
$page_post = (new FacebookRequest( $session, 'POST', '/'. $page_id .'/feed', array(
    'access_token' => $access_token,
    'name' => 'Facebook API: Posting As A Page using Graph API v2.x and PHP SDK 4.0.x',
    'link' => 'https://www.webniraj.com/2014/08/23/facebook-api-posting-as-a-page-using-graph-api-v2-x-and-php-sdk-4-0-x/',
    'caption' => 'The Facebook API lets you post to Pages you administrate via the API. This tutorial shows you how to achieve this using the Facebook PHP SDK v4.0.x and Graph API 2.x.',
    'message' => 'Check out my new blog post!',
  ) ))->execute()->getGraphObject()->asArray();

// return post_id
print_r( $page_post );

我找到了另一种获取永不过期令牌的方法:

    //get your access token for the app that you will use in 
    //https://developers.facebook.com/tools/explorer/

    //exchange it for long-term access token

    $accessToken='xxxxxxxxGet it above';
    $session = new FacebookSession($accessToken);
    $response = (new FacebookRequest($session, 'POST', '/oauth/access_token', array(
        'grant_type' => 'fb_exchange_token',
        'client_id' => 'the client id for the app',
        'client_secret' => 'the client secret for the app',
        'fb_exchange_token' => $accessToken)))->execute()->getGraphObject()->asArray();


    $LongTermUserAccessToken=$response['access_token'];


    $session = new FacebookSession($LongTermUserAccessToken);

    //get My User ID if you don't know 

    $response = (new FacebookRequest( $session, 'GET', '/me' ,  array( 'fields' => 'id' ) ))
        ->execute()->getGraphObject()->asArray();
    $meId=$response['id'];

    //get Tokes for all my pages the page that you are usig will have a never expire token
    //you can prove on https://developers.facebook.com/tools/debug/

    $response = (new FacebookRequest( $session, 'GET', '/'.$meId.'/accounts' ))
        ->execute()->getGraphObject()->asArray();

    var_dump($response);die;

如果用户注销时更改了长期访问令牌,为什么要说它?这是为了在您自己的风扇页面(您是管理员)上发布,使用此方法可以获得无过期访问令牌。您可以注销,但您的令牌未过期。这不适用于用户,仅适用于粉丝页面管理员Facebook php api根本没有类似于“FacebookSession”的类此答案使用fb sdk 4.0.1 Facebook php api根本没有类似于“FacebookSession”的类-此答案于17个月前发布@XCode。你真的认为它还能用吗?自那时以来,PHP SDK发生了重大变化,Facebook API本身也是如此。