wake-up-neo.com

Mit der Facebook API 5.0 erhalten Sie Zugriffstoken für Seiten PHP

Ich muss Nachrichten auf einer Facebook-Seite posten. Konkret möchte ich über cron posten.

In den API-Dokumenten heißt es:

Seitenzugriffstoken - Diese Zugriffstoken ähneln den Benutzerzugriffstoken, bieten jedoch die Berechtigung für APIs, die die Daten einer Facebook-Seite lesen, schreiben oder ändern. Um ein Seitenzugriffstoken zu erhalten, müssen Sie zunächst ein Benutzerzugriffstoken anfordern und die Berechtigung manage_pages anfordern. Sobald Sie über das Benutzerzugriffstoken verfügen, erhalten Sie das Seitenzugriffstoken über die Graph-API.

Wie kann ich einen Benutzerzugriff und ein Seitenzugriffstoken ohne einen Seitenrückruf erhalten? Ist das möglich?

6
S. Délas

Was Sie brauchen, ist ein Extended Page Token, es ist für immer gültig. Sie erhalten eine davon:

  • Autorisieren Sie mit der Berechtigung manage_pages (und publish_pages, wenn Sie später als Seite veröffentlichen möchten), um ein Benutzertoken zu erhalten
  • Erweitern Sie das Benutzertoken
  • Verwenden Sie /me/accounts?fields=access_token mit dem erweiterten Benutzertoken, um eine Liste aller Ihrer Seiten mit erweiterten Seitentoken abzurufen, oder verwenden Sie /page-id?fields=access_token, um ein erweitertes Seitentoken für eine bestimmte Seite abzurufen

Informationen zu allen Tokens und zur Erweiterung des User-Tokens:

9
luschn

PHP API V5

Der folgende Code funktionierte für mich nach 24 Stunden Kopfkratzen .... hoffe, das hilft übrigens, wenn Sie diesen Code benötigen, um zu arbeiten, sollten Sie die ersten beiden Schritte abgeschlossen haben

  1. Sollte mich bei Facebook einloggen, habe ich getRedirectLoginHelper verwendet
  2. Sitzungsvariable mit dem empfangenen Benutzerzugriffstoken in der Rückrufdatei setzen $_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

Sie können das Seitentoken folgendermaßen abrufen:

$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

Ich habe nur JavaScript-Code, aber sobald Sie ein Zugriffstoken haben, erhalten Sie möglicherweise die Seiten, die von dem angegebenen Benutzer verwaltet werden können. Dies wird ein Seitenzugriffstoken für jeden von ihnen enthalten:

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

Die zurückgegebenen Daten sind wie folgt:

{
  "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 ist Ihr Seitentoken. Sie können die obige Anfrage einfach in PHP umwandeln.

0
Axel Amthor