Samstag, 12. Juli 2014

Länger gültige Facebook Access Tokens

In vorigen Posts habe ich über die Verbindung von C# und Facebook geschrieben (siehe dazu das entsprechende Label).
In einigen davon (z.B. beim Posten von Statusnachrichten) benötigten wir ein sogenanntes Access Token, welches unserer Anwendung die benötigten Rechte einräumt. Auf diese Access Tokens möchte ich in diesem Post etwas näher eingehen, da Facebook die Gültigkeit dieser verkürzt hat.
Wie man hier nachlesen kann, gibt es verschiedene Arten von Access Tokens, z.B. App Access Tokens und User Access Tokens. App Access Tokens werden von jeder Anwendung benötigt, welche auf Facbeook zugreifen möchte und können einfach durch Angabe von App ID und App Secret erworben werden.
Möchte man jedoch nutzerbezogene Aktionen wie zum Beispiel das eben erwähnte Posten von Statusnachrichten vornehmen, benötigt man ein User Access Token, welches durch den Nutzer authorisiert ist. Mit diesem Tokentyp möchten wir uns hier beschäftigen.
Token dieser Art können manuell über den Graph API Explorer erworben werden, für welchen wir uns mit dem gewünschten Benutzeraccount anmelden. Dann wählen wir oben in der Dropdownleiste die gewünschte Anwendung aus, für welche das Token gültig sein soll und klicken auf "Get Access Token". Im sich nun öffnenden Fenster wählen wir die benötigten Rechte aus und bestätigen, der Tokenstring ist dann im Textfeld vorhanden. Diesen String können wir nun im Programmcode benutzen und so, zum Beispiel, Dinge posten.
In früheren Posts hatte ich es nun hiermit belassen, da die Tokens recht lange gültig waren. Dies hat Facebook nun jedoch geändert, Tokens sind jetzt nur noch 1 - 2 Stunden gültig. Das Auslaufdatum der Tokens und andere Informationen können über den Facebook Debugger geprüft werden.

Schreiben wir nun eine Anwendung, die mit Facebook arbeitet, müssten wir manuell alle 1 - 2 Stunden ein neues Token anfordern, was natürlich nicht praktikabel ist. Da das codeseitige Anfordern eines Tokens nicht so leicht ist, entschied ich mich für die folgende Variante: Wir erzeugen einmalig aus dem oben erzeugten Token eines, welches deutlicher länger gültig ist und übergeben dies der Anwendung.
Zu dieser Sache gibt es hier eine Hilfeseite von Facebook, in welcher mehrere Alternativen vorgeschlagen werden, wir verwenden die vierte. Wie dort beschrieben, führt das Aufrufen der folgenden Adresse im Browser zur Erzeugung eines neuen Access Tokens, welches dann ausgegeben wird:

https://graph.facebook.com/oauth/access_token?
client_id=APP_ID&
client_secret=APP_SECRET&
grant_type=fb_exchange_token&
fb_exchange_token=EXISTING_ACCESS_TOKEN
In dem Aufruf ist APP_ID durch die ID der App zu ersetzen, APP_SECRET durch das App Secret und EXISTING_ACCESS_TOKEN durch das oben erzeugte kurzfristige Access Token. Das so erzeugte Token hat dann eine Gültigkeit von ca. 2 Monaten.

Keine Kommentare:

Kommentar veröffentlichen