2015-09-30 15 views
5

Muszę publikować wiadomości na stronie na Facebooku. W szczególności chcę publikować przez cron.Uzyskaj token dostępu strony z API Facebook 5.0 PHP

Oto co docs API powiedzieć:

Page Access Token – These access tokens are similar to user access tokens, except that they provide permission to APIs that read, write or modify the data belonging to a Facebook Page. To obtain a page access token you need to start by obtaining a user access token and asking for the manage_pages permission. Once you have the user access token you then get the page access token via the Graph API.

Jak mogę uzyskać dostęp do strony użytkownika i token dostępu bez strony zwrotnego? czy to możliwe?

+0

Próbujesz to zrobić z crona lub PHP? –

+0

@NateBarbettini nawet z cron może być PHP, to nie wyklucza się nawzajem ...? –

+0

@AxelAmthor Fair wystarczająco, zapomniałem o tym. –

Odpowiedz

5

To, czego potrzebujesz, token rozszerzonej strony, jest ważny na zawsze. Otrzymasz jeden tak:

  • autoryzacji za zgodą manage_pages (i publish_pages jeśli chcesz opublikować jako stronę później), aby uzyskać Użytkownika Reklamowe
  • Extend Użytkownikowi Reklamowe
  • Zastosowanie /me/accounts?fields=access_token z rozszerzoną użytkownik Reklamowe aby uzyskać listę wszystkich stron z rozszerzonym tokenów stronę - lub użyj /page-id?fields=access_token dostać dłuższy stronę token dla konkretnej strony

Informacje o wszystkich żetonów i jak przedłużyć token użytkownika:

0

Mam tylko kod JavaScript, ale gdy już masz token dostępu, możesz uzyskać strony, które mogą być administrowane przez danego użytkownika. To zawierają token dostępu stronę dla każdego z nich:

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

Dane podane jest jak z powrotem:

{ 
    "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 jest strona żeton. Możesz łatwo przekształcić powyższe żądanie w PHP.

+0

Bardzo dziękuję za odpowiedź. Rozumiem, w jaki sposób mogę uzyskać token dostępu do strony. Ale jak mogę zdobyć token użytkownika? –

+0

Pomyśl, znajdę: 1) Uzyskaj token dostępu z: https://developers.facebook.com/tools/explorer/ 2) Uzyskaj token dostępu na żywo z https://graph.facebook.com/oauth/ access_token? grant_type = fb_exchange_token & client_id = & client_secret = & fb_exchange_token = 3) Zdobądź token stałego dostępu za pomocą swojego poprzedniego linku –

2

PHP API V5

Poniższy kod pracował dla mnie po 24 godzinach zarysowania głowy .... nadzieję, że to pomaga przy okazji, jeśli to potrzebne kod do pracy powinieneś wykonać dwa pierwsze kroki:

  1. Powinien mieć zalogować się na facebook użyłem getRedirectLoginHelper
  2. zmienny sesji z odebranego tokenu dostępu użytkownika na wezwanie z powrotem złożyć $_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); 
+0

To była odpowiedź, której szukałem! Dzięki. –

+0

Nie działa, zgłasza błąd krytyczny: Klasa "FacebookRequest" nieobecna w /home/wwwdj4yo/public_html/wp-content/plugins/fb-reviews/classes/_import.php w linii 24. Spróbuj wypróbować testowanie odpowiedzi przed wysłaniem, ponieważ ratuje innych ludzi przed marnowaniem czasu na przyjmowanie porad od ludzi, którzy nie wiedzą o czym mówią. –

+1

Proszę zrozumieć, że sprawdziłem za pomocą pliku php nie wewnątrz wtyczki wt, To działało dla mnie w 2016 roku, a inna osoba na 2017 lutego, dlatego zamiast kopiować wklejanie kodu, sprawdź dokumenty i porównaj swój kod! – Fara

1

można uzyskać na stronie żeton ten sposób:

$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); 
Powiązane problemy