W tym wpisie przedstawię cały proces tworzenia auto postów na Facebooku z poziomu kodu PHP wraz z wygenerowaniem bezterminowego access token.
Poniższy wpis dotyczy aplikacji na Facebooku w wersji API 2.9. Testowane w dniu 14.12.2022.
1. Tworzenie aplikacji na Facebook-u
Zaczynamy od stworzenia własnej aplikacji na FB.
Będąc zalogowani na swoje konto na FB przechodzimy pod adres https://developers.facebook.com/
W menu po prawej na górze wybieramy „Create a new app”. W nowym oknie wpisujemy nazwę aplikacji i adres email administratora. Klikamy na „Create APP ID”. Prawdopodobnie zostaniemy poproszeni o przepisanie kodu captcha dla bezpieczeństwa. Po utworzeniu aplikacji automatycznie przekierowuje nas do jej panelu.
Z menu po lewej wybieramy „Settings”. Następnie w pole „App Domains” wpisujemy adres url naszej strony. Klikamy na „Add platform”, wybieramy „Website” i następnie w polu „Site URL” znów wpisujemy adres url naszej strony. Klikamy na „Save Changes”
Z menu po lewej wybieramy „App Review”. W polu „Make [nasza nazwa aplikacji] public?” zaznaczamy „Yes”, wybieramy kategorie i klikamy „Confirm”. Powinna wyświetlić się informacja „Your app is currently live and available to the public.”
Z menu po lewej wybieramy „Dashboard”. Mamy tam kilka pól, te które są nam potrzebne to „App ID” oraz „App Secret” (domyślnie ukryte, należy kliknąć „show”, prawdopodobnie system zapyta nas o hasło do FB). Zapiszmy wartości tych pól w bezpiecznym miejscu, później będą nam potrzebne
2. Tworzenie strony na FB
Aby móc publikować posty na Facebook-u musimy oczywiście mieć utworzoną swoją stronę (fanpage). Będąc zalogowani na swoje konto na https://www.facebook.com/ wybieramy z menu u góry po prawej ikonkę z trójkącikiem i klikamy „Utwórz stronę”.
Wybieramy kategorię strony, wpisujemy jej nazwę a następnie klikamy na „Rozpocznij”. Po stworzeniu strony zostaniemy na nią automatycznie przekierowani. To na niej będą się pojawiać publikowane automatycznie posty. Potrzebne jest nam ID strony które możemy pobrać zgodnie z opisem: https://www.facebook.com/business/help/2814101678867149
3. Tworzenie tokenów
Do skryptu auto postu niezbędny będzie nam token dostępu.
Będąc zalogowani na FB przechodzimy pod adres https://developers.facebook.com/tools/explorer/
Z listy „Application:” wybieramy nazwę naszej aplikacji na FB. Klikamy na „Get Token” a następnie na „Get User Access Token”. W nowym oknie zaznaczamy pozycję: „publish_actions”, „publish_pages” i „manage_pages”. Klikamy 'Get Access Token”. Potwierdzamy uprawnienia naszej aplikacji. Zaznaczamy, że posty publikowane przez aplikację mogą widzieć wszyscy (publiczne). Klikamy na „OK”. W polu „Access Token” ujrzymy długi ciąg znaków – to jest nasz token.
4. Tworzenie nie wygasających tokenów.
Token stworzony w punkcie 3 ma tę wadę, że ma określony termin ważności – zazwyczaj tylko 24 godziny. Istnieje na szczęście możliwość generowania nie wygasających tokenów.
W tym celu przechodzimy pod adres: https://graph.facebook.com/oauth/access_token?client_id=<CLIENT_ID &client_secret=<CLIENT_SECRET>&grant_type=fb_exchange_token&fb_exchange_token=<ACCESS_TOKEN>
Wartości w linku powinniśmy podmienić wg poniższej listy:
- <ACCESS_TOKEN> to jest nasz token z punktu 3
- <CLIENT_ID> – ID naszej aplikacji na FB
- <CLIENT_SECRET> Secret naszej aplikacji na FB
Wyświetlony zostanie nowy, nie wygasający (non-expiring) token.
5. Auto post na FB – kod PHP
Przyszła pora na stworzenie kodu PHP na naszej domenie. Żądanie wstawienia posta możemy zrealizować na kilka sposób, jednym z nich jest żądanie przez CURL. Poniżej przykładowy kod PHP:
define('FACEBOOK_PAGE_ID', 'tu wpisz ID strony'); define('FACEBOOK_ACCESS_TOKEN', 'tu wpisz access token'); $post_url = 'https://graph.facebook.com/'.FACEBOOK_PAGE_ID.'?fields=access_token&access_token='.FACEBOOK_ACCESS_TOKEN; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $post_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $results = json_decode(curl_exec($ch), true); curl_close($ch); $access_token = $results['access_token']; if($access_token){ $data['link'] = 'Link do strony'; $data['message'] = 'Treść wiadomości'; $data['caption'] = 'Nagłówek wpisu'; $data['access_token'] = $access_token; $post_url = 'https://graph.facebook.com/'.FACEBOOK_PAGE_ID.'/feed'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $post_url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $return = curl_exec($ch); curl_close($ch); print_r($return); // linia opcjonalna, jeśli chcemy wyświetlić wynik na ekranie }
Zapisujemy taki kod na serwerze, następnie wywołujemy plik. Ostatnia linia jest oczywiście opcjonalna, służy wyświetleniu odebranego z serwera Facebooku komunikatu.
Posty powinny się już automatycznie pojawiać na Facebook:)
6. Posty w tablicy „Posty gości”
Domyślnie posty będą się pojawiać na stronie w sekcji „Posty gości” . Jeśli zależy nam żeby pokazywały się na głównej tablicy musimy nadać naszej aplikacji dodatkowe uprawnienia.
Będąc zalogowani na koncie FB przechodzimy pod adres https://developers.facebook.com/. Z menu u góry po prawej wybieramy naszą aplikację. Po przejściu do panelu aplikacji z menu po lewej wybieramy „App Review”. W sekcji „Current Submission” wybieramy „Add items”. Zaznaczamy pola „publish_actions”, „publish_pages” i „manage_pages” i klikamy „Add items”. Pojawią się one pod „Current Submission” z informacją: „Complete the notes for this item before submitting.” Klikamy na „notes” i uzupełniamy wszystkie wymagane pola. Będziemy musieli potwierdzić, że nasza aplikacja nie łamie zasad FB oraz przesłać screencast pokazujący automatyczne dodawanie postów. Po akceptacji przez zespół Facebook nasze posty będą pojawiać się automatycznie na głównej tablicy.
7. Sprawdzenie ważności tokenu
Nasz token możemy sprawdzić na stronie https://developers.facebook.com/tools/debug/accesstoken/
W pole „Enter a access token to debug” wklejamy nasz token. Wyświetlą się szczegółowe dane na temat m.in. jego utworzenia oraz daty ważności.
Podsumowanie
Mam nadzieję, że ten wpis pomoże Wam w tworzeniu automatycznych postów na Facebook-u. Link do kodu na GitHub: https://github.com/kamilwyremski/facebook-auto-post
W razie problemów i pytań dotyczących integracji zachęcam do dodawania komentarzy pod tym wpisem:)