Jak wygenerować długowieczny token dostępu do Facebooka?
Czy kiedykolwiek spotkałeś się z zadaniami API? Wtedy prawdopodobnie słyszałeś o ‘Access Token’. Token dostępu to rodzaj tokena tożsamości, którego serwisy społecznościowe (jak Facebook) używają do wykonywania operacji w imieniu użytkownika.
Innymi słowy, aplikacja z ważnym tokenem dostępu może pobrać listę Twoich znajomych, opublikować ją na Twojej ścianie, uzyskać podstawowe dane, takie jak adres e-mail, data urodzenia itp. Oczywiście musisz zezwolić na wszystkie te dostępy. Bez Twojej zgody token dostępu nie może uzyskać dostępu do informacji o użytkownikach.
Mówiąc o API Facebooka, ich API zapewnia 2 rodzaje tokenów: tokeny dostępu o krótkim i długim czasie życia.
Token krótkotrwały ma krótki okres czasu. Oznacza to, że nie możesz wykonywać wywołań API po wygaśnięciu tokena. Otrzymasz nieautoryzowaną odpowiedź po wygaśnięciu tokena. Każde wywołanie API wymaga prawidłowego tokena dostępu jako parametru, a następnie wysyła odpowiedź zwrotną.
Po wygaśnięciu tokena należy poprosić użytkownika o ponowne przejście procesu logowania za pomocą aplikacji.
To nie ma sensu. To rodzaj powtarzającego się procesu, którego użytkownik w rzeczywistości nie lubi.
W tym miejscu powinniśmy użyć koncepcji Long-Lived access tokena Facebooka. Żeton długowieczny trwa na ogół około 60 dni. I jest to znacznie lepsze niż używanie tokenów o krótkim czasie życia.
Powiedziawszy to, zobaczmy, jak wygenerować token dostępu Long-Live do Facebooka.
Zarejestruj aplikację
Aby rozpocząć, musisz najpierw zarejestrować aplikację na Facebook Developers. Dostaniesz krok po kroku, w jaki sposób zarejestrować i skonfigurować aplikację tutaj.
Po zarejestrowaniu aplikacji skopiuj identyfikator aplikacji i klucz aplikacji, których potrzebujemy za chwilę.
Wygeneruj długowieczny token dostępu
Teraz mamy identyfikator aplikacji i tajne klucze aplikacji. Utwórz plik o nazwie config.php
i dodaj nasze klucze za pomocą metody PHP define().
config.php
<?php
define('CLIENT_ID', 'YOUR_CLIENT_ID');
define('CLIENT_SECRET', 'YOUR_CLIENT_SECRET');
define('REDIRECT_URL', 'YOUR_SITE_URL/redirect.php');
?>
W powyższym kodzie określiliśmy REDIRECT_URL na YOUR_SITE_URL/redirect.php. Więc utwórz plik redirect.php
. To jest plik, w którym napiszemy kod do generowania tokena Long-Lived.
Ale wcześniej musimy utworzyć adres URL logowania, który przekieruje użytkownika do strony logowania na Facebooku, aby autoryzować Twoją aplikację. Utwórz plik login.php
i dodaj do niego poniższy kod.
login.php
<?php
require_once "config.php";
echo "<a href='https://www.facebook.com/v2.10/dialog/oauth?client_id=". CLIENT_ID. "&redirect_uri=". REDIRECT_URL. "'>Login To Facebook</a>";
?>
Gdy użytkownik kliknie link do logowania do Facebooka, zostanie przekierowany do strony logowania na Facebooku. Gdy zezwolą na dostęp do Twojej aplikacji, użytkownik przekieruje do adresu URL TWOJEJ_SITE_URL/redirect.php. W zamian otrzymujemy kod jako parametr GET z Facebooka. Korzystając z tej wartości kodu, generujemy pierwszy token dostępu o krótkim czasie życia. A następnie za pomocą tego krótkotrwałego tokena generujemy długowieczny token dostępu.
Upewnij się, że masz włączone rozszerzenie CURL na swoim serwerze, w przeciwnym razie nasz kod nie będzie działał zgodnie z oczekiwaniami.
przekierowanie.php
<?php
require_once "config.php";
if (isset($_GET['code']) && !empty($_GET['code'])) {
$post = ['client_id'=> CLIENT_ID, "redirect_uri" => REDIRECT_URL, "client_secret" => CLIENT_SECRET, 'code' => $_GET['code']];
$arr_result = getFBResponse($post);
//generate long-lived access token
if (isset($arr_result->access_token)) {
$post1 = ['grant_type' => 'fb_exchange_token', 'client_id'=> CLIENT_ID, "client_secret" => CLIENT_SECRET, 'fb_exchange_token' => $arr_result->access_token ];
$arr_result1 = getFBResponse($post1);
echo "Long Lived Token: ". $arr_result1->access_token;
}
}
function getFBResponse($arr_post = []) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'https://graph.facebook.com/v2.10/oauth/access_token');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($arr_post));
$response = curl_exec($ch);
return json_decode($response);
}
?>
Otóż to! Mamy nadzieję, że zapoznałeś się z procesem generowania tokena dostępu Long-Live dla Facebook API. Podziel się swoimi przemyśleniami w sekcji komentarzy poniżej.