API's

Facebook page feed

Po Cambridge Analytica įvykių Facebook sugriežtino duomenų prieigą ir jei anksčiau viešus duomenis galėdavo pasiimti bet kas, tai dabar atsirado papildomų niuansų - norint gauti puslapio duomenis, reikia turėti Page Public Content Access teises, o joms gauti reikia praeiti visą App Review procesą, kuris susideda ne tik iš įmonės duomenų suvedimo, tačiau reikia pateikti aprašymą ir nuorodas, kurios demonstruotų, kaip šios teisės bus naudojamos. Tačiau yra viena išlyga - šių teisių nereikia, jei vartotojas turi manage_page teises tam puslapiui. Kitaip tariant - jei tai puslapio administratorius.

Access Token generavimas

Taigi užtenka tik susigeneruoti token'us ir juos naudoti duomenų paėmimui:

  • Pirmiausia pradedama nuo New App sukūrimo Facebook Developers puslapyje ir ten nusikopijuojame App ID ir Secret

  • Einama į Facebook Graph API Explorer ir sugeneruojamas trumpos trukmės user access token'as. Teises vartotojui priskiriame "manage_pages" ir "pages_show_list". Sukūrus nusikopijuojam Access Token reikšmę.

  • Einam į Access Token Tool. Jeigu prie Apps'o nėra User Token, tai sugeneruojame jį. Jei yra, tai tiesiog spaudžiame Debug.

  • Atsidariusiame lange įpastinama Access Token, kuris buvo nukopijuotas Graph API Explorer puslapyje ir spaudžiama Debug. Po paspaudimo matoma duomenų lentelė, kurioje turėtų matytis, kad Expires reikšmė yra 1h. Lentelės apačioje spaudžiame "Extend Access Token". Bus sugeneruotas naujas "long-lived" raktas, galiojantis 2mėn.

  • Grįžtama į Graph API Explorer, čia į Access Token lauką įstatomas šitas long lived token'as, o kaip endpoint nurodomas "/me/accounts". Spaudžiam submit ir jei viskas ok, turimas gauti teigiamas response, iš kurio reikalingas naujasis, nesibaigiantis "Access Token" kuris ir yra reikalingas.

  • Pasitikriname jį: einam vėl į Access Token Debugger, susivedam jo reikšmę ir šį kartą Expires reikšmė turėtų būti "Never"

Api naudojimas

composer require facebook/graph-sdk
--
require_once __DIR__ . '/vendor/autoload.php';
$fb = new \Facebook\Facebook([
'app_id' => '{app-id}',
'app_secret' => '{app-secret}',
'default_graph_version' => 'v2.10',
//'default_access_token' => '{access-token}', // optional
]);
$response = $fb->get('/{page-id}/posts?&fields=id,created_time,permalink_url,message,attachments', {access-token});