web-dev-qa-db-ja.com

Facebook API5.0でページアクセストークンを取得PHP

Facebookページにメッセージを投稿する必要があります。具体的には、cron経由で投稿したいと思います。

APIドキュメントの内容は次のとおりです。

ページアクセストークン–これらのアクセストークンは、Facebookページに属するデータの読み取り、書き込み、または変更を行うAPIにアクセス許可を提供することを除いて、ユーザーアクセストークンに似ています。ページアクセストークンを取得するには、まずユーザーアクセストークンを取得し、manage_pages権限を要求する必要があります。ユーザーアクセストークンを取得したら、GraphAPIを介してページアクセストークンを取得します。

ページコールバックなしでユーザーアクセスとページアクセストークンを取得するにはどうすればよいですか?これは可能ですか?

7
S. Délas

拡張ページトークンが必要な場合、それは永久に有効です。あなたはこのようなものを手に入れます:

  • manage_pages権限(および後でページとして投稿する場合はpublish_pages)を使用して、ユーザートークンを取得することを承認します
  • ユーザートークンを拡張する
  • 拡張ユーザートークンで/me/accounts?fields=access_tokenを使用して、拡張ページトークンですべてのページのリストを取得します。または、/page-id?fields=access_tokenを使用して、特定のページの拡張ページトークンを取得します。

すべてのトークンとユーザートークンを拡張する方法に関する情報:

10
luschn

PHP API V5

以下のコードは、24時間の頭をかいた後、私のために機能しました....ところで、このコードが機能する必要がある場合は、最初の2つの手順を完了する必要があります。

  1. getRedirectLoginHelperを使用したFacebookにログインする必要があります
  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 );
6
f4r4

次の方法でページトークンを取得できます。

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

私は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に簡単に変換できます。

0
Axel Amthor