2017-01-24 1 views
0

Ich habe eine erholsame API entwickelt, wo der Client eine Facebook-Benutzer-ID (sagen wir myapi/get_user/123) und die API muss öffentliche Informationen wie Name, Geburtstag, usw. abrufen erledigt.Best Practice zur Handhabung des FB Access Tokens in benutzerdefinierten API

Aktuelle Code:

$fb = new Facebook\Facebook([ 
     'app_id' => $fbSettings['app_id'], 
     'app_secret' => $fbSettings['app_secret'], 
     'default_graph_version' => $fbSettings['default_graph_version'] 
]); 

$token = 'EAAD...'; 

try { 
    // Returns a `Facebook\FacebookResponse` object 
    $fbResponse = $fb->get('/' . $request->getAttribute('id') . '?fields=link, name, birthday', $token); 
} catch(Facebook\Exceptions\FacebookResponseException $e) { 
    return $response->withStatus(500)->withJson(['msg' => $e->getMessage()]); 
    exit; 
} 

$user = $fbResponse->getGraphUser(); 
return $response->withJson($user); 

Mein Problem ist es, dass ich nicht weiß, was der beste Weg ist, um die Zugriffstoken zu handhaben. Sollte das Token vom Kunden zur Verfügung gestellt werden? In diesem Fall sollte als param in der gleichen Anfrage übergeben werden (z. B. myapi/get_user/123?token=ABC123) oder sollte eine andere API-Aufruf (sagen wir myapi/register_token/ABC123) brechen das Prinzip der Staatenlosigkeit.

Ich suche den besten Weg (oder die beste Praxis), um das Access-Token zu behandeln.

Antwort

1

Der beste Weg, Zugriffstoken zu übergeben ist in Header-Autorisierungs-Anfrage:

GET myapi/get_user/123 HTTP/1.1 
Host: mysite.com 
Authorization: <YOUR_ACCESS_TOKEN> 
+0

Gibt es eine Möglichkeit, dass in der Client müssen die Facebook-Zugriffstoken, um die Vereinfachung der Nutzung meiner api nicht bietet? –