Hur man skapar Facebook långlivad åtkomsttoken
Har du någonsin stött på API-uppgifter? Då har du förmodligen hört talas om "Access Token". Åtkomsttoken är ett slags identitetstoken som sociala webbplatser (som Facebook) använder för att utföra operationer för en användares räkning.
Med andra ord kan en applikation med giltig åtkomsttoken hämta din vänlista, posta på din vägg, få dina grundläggande uppgifter som e-post, födelsedatum osv. Naturligtvis måste du tillåta tillstånd för alla dessa åtkomster. Utan din tillstånd kan åtkomsttoken inte komma åt användarinformation.
När vi pratar om Facebook API ger deras API två typer av tokens: kortlivade och långlivade åtkomsttoken.
Den kortlivade token har en kort tidsperiod. Det betyder att du inte kan ge API-samtal efter att token upphör. Du får det obehöriga svaret när token upphör. Varje API-samtal kräver giltig åtkomsttoken som en parameter, då bara de skickar ett svar tillbaka.
När token upphört måste du be användaren att gå igenom inloggningsprocessen igen med din applikation.
Det är inte meningsfullt. Det är typ av att göra en upprepad process som användaren inte gillar faktiskt.
Det är här vi ska använda begreppet Långlivad åtkomsttoken för Facebook. En långlivad token varar i allmänhet cirka 60 dagar. Och det är mycket bättre än att använda kortlivade tokens.
Med detta sagt, låt oss se hur man genererar en långlivad åtkomsttoken för Facebook.
Registrera en ansökan
För att komma igång måste du först registrera en ansökan på Facebook-utvecklare. Du får steg för steg guide om hur du registrerar och konfigurerar en app här.
När du registrerat appen kopierar du app-id och apphemlighet som vi behöver på ett ögonblick.
Skapa en långlivad åtkomsttoken
Nu har vi app-id och apphemliga nycklar. Skapa en fil som heter config.php
och lägg till våra nycklar med PHP definiera() -metoden.
config.php
<?php
define('CLIENT_ID', 'YOUR_CLIENT_ID');
define('CLIENT_SECRET', 'YOUR_CLIENT_SECRET');
define('REDIRECT_URL', 'YOUR_SITE_URL/redirect.php');
?>
I ovanstående kod angav vi REDIRECT_URL till YOUR_SITE_URL / redirect.php. Så skapa filen redirect.php
. Det här är filen där vi kommer att skriva koden för att skapa en långlivad token.
Men innan det måste vi skapa en inloggnings-URL som omdirigerar en användare till Facebook-inloggningssidan för att auktorisera din app. Skapa en fil login.php
och lägg till koden nedan i den.
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>";
?>
När en användare klickar på länken för att logga in på Facebook omdirigeras de till Facebook-inloggningssidan. När de en gång tillåter din app kommer användaren att omdirigera till YOUR_SITE_URL / redirect.php. I gengäld får vi en kod som en GET-parameter från Facebook. Med hjälp av detta kodvärde genererar vi en första kortlivad åtkomsttoken. Och sedan genom denna kortlivade token genererar vi en långlivad åtkomsttoken.
Se till att du har CURL-tillägg aktiverat på din server annars fungerar vår kod inte som förväntat.
redirect.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);
}
?>
Det är allt! Vi hoppas att du fick veta om processen att generera en långlivad åtkomsttoken för Facebook API. Dela dina tankar i kommentarsektionen nedan.