web-dev-qa-db-fra.com

Comment un client doit-il transmettre un jeton d'accès Facebook au serveur?

À chaque appel à mon REST, j'exige que les clients transmettent le jeton d'accès Facebook de l'utilisateur, ce qui authentifie l'utilisateur. Quelle est la meilleure pratique pour transmettre ce jeton?

  1. peut-être comme paramètre derrière le point d'interrogation HTTP

    GET /api/users/123/profile?access_token=pq8pgHWX95bLZCML
    
  2. ou en quelque sorte dans l'en-tête de la demande, de la même manière que l'authentification de base HTTP

  3. peut-être une troisième option? (J'ai exclu de le passer dans un JSON parce que je veux que le jeton soit également passé dans les appels GET, donc JSON ne tiendrait pas là, je pense)
31
zafeiris.m

Si vous regardez les points de terminaison API fournis par tous les fournisseurs populaires OAuth (Google, Facebook, Pocket, Git, etc.), vous verrez qu'ils ont tous des points de terminaison HTTPS.

Les façons dont vous pouvez transmettre un jeton d'accès au fournisseur sont les suivantes:

i) En tant que paramètre de requête -

https://yourwebsite.com/api/endpoint?access_token=YOUR_ACCESS_TOKEN

ii) Dans l'en-tête de la demande -

 GET /api/users/123/profile HTTP/1.1
 Host: yourwebsite.com
 Date: Tue, 14 May 2013 12:00:00 GMT
 Authorization: <YOUR_ACCESS_TOKEN>

Ces deux approches sont généralement prises en charge par la plupart des API. Vous pouvez penser à faire de même.

iii) Pocket API n'utilise pas du tout GET. Ils utilisent POST pour toutes leurs demandes, même pour récupérer des données. Cochez cette lien pour voir leur documentation. Notez qu'ils utilisent POST = pour récupérer les données et passer les paramètres JSON.

40
divyanshm