web-dev-qa-db-fra.com

Obtenir un jeton d'accès à la page avec Facebook API 5.0 PHP

Je dois poster des messages sur une page Facebook. Plus précisément, je veux poster via cron.

Voici ce que disent les documents de l'API:

Jeton d'accès à la page - Ces jetons d'accès sont similaires aux jetons d'accès utilisateur, à la différence près qu'ils autorisent les API à lire, écrire ou modifier les données appartenant à une page Facebook. Pour obtenir un jeton d'accès à la page, vous devez commencer par obtenir un jeton d'accès utilisateur et demander l'autorisation de manage_pages. Une fois que vous avez le jeton d'accès utilisateur, vous obtenez le jeton d'accès à la page via l'API Graph.

Comment obtenir un jeton d'accès utilisateur et d'accès à une page sans rappel de page? Est-ce possible?

6
S. Délas

Ce dont vous avez besoin est un jeton de page étendu, il est valable pour toujours. Vous en obtenez un comme ceci:

  • Autorisez avec l'autorisation manage_pages (et publish_pages si vous souhaitez publier ultérieurement en tant que page) pour obtenir un jeton d'utilisateur.
  • Étendre le jeton d'utilisateur
  • Utilisez /me/accounts?fields=access_token avec le jeton d'utilisateur étendu pour obtenir une liste de toutes vos pages avec des jetons de page étendus ou utilisez /page-id?fields=access_token pour obtenir un jeton de page étendu pour une page spécifique.

Informations sur tous les jetons et comment étendre le jeton utilisateur:

9
luschn

API PHP V5

Le code ci-dessous a fonctionné pour moi après 24 heures de grattage de la tête .... espérons que cela vous aidera au passage si vous avez besoin de ce code pour fonctionner, vous devriez avoir effectué les deux premières étapes.

  1. Je devrais avoir un identifiant Facebook J'ai utilisé getRedirectLoginHelper
  2. Définir la variable de session avec le jeton d'accès utilisateur reçu sur le fichier de rappel $_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 );
3
Fara

Vous pouvez obtenir le jeton de page de cette façon:

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

Je n'ai que du code JavaScript, mais une fois que vous avez un jeton d'accès, vous pouvez obtenir les pages qui peuvent être administrées par l'utilisateur donné. Cela contiendra un jeton d'accès à la page pour chacun d'eux:

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)
                {

Les données renvoyées sont comme:

{
  "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 est votre jeton de page. Vous pouvez transformer la requête ci-dessus en PHP facilement.

0
Axel Amthor