2 votes

Twitter - Obtenir un jeton de demande Réponse 401 - POST

Je suis en train de créer une application avec Twitter et je suis bloqué à la première étape.

Je suis en train de faire un POST vers https://api.twitter.com/oauth/request_token , mais à chaque fois j'obtiens une erreur 401.

Je suis en train d'utiliser une variante de la méthode POST d'Apache Commns HTTPClient, très spécifique à mon outil, donc je vais juste donner une vue d'ensemble.

Mon En-Tête:   'oAuth '+
             'oauth_callback="oob",'+
             'oauth_consumer_key="zhaD2Y6RrQaaZQSz21RShA",'+// fake
             'oauth_nonce="'+   +'",'+
             'oauth_signature="'+ a.signature +'",'+
             'oauth_signature_method="HMAC-SHA1",'+
             'oauth_timestamp="'+  +'"';

Je génère la Signature de cette manière:

Étape 1: Encodage en Pourcentage des Paires Clé-Valeur, et les Appendant comme indiqué dans la page de Signature de Twitter.

Étape 2: Appendant POST et l'URL, après encodage en pourcentage. Voici ce qu'il me reste :

POST&https%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token&oauth_callback%3Doob%26oauth_consumer_key%20%3D%20zhaD2Y6RrQaaZQSz21RShA%26oauth_nonce%3DkYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1318622958,

Jusqu'ici tout va bien..

Mon problème commence ici, l'étape suivante est de signer la clé, et cela nécessite deux choses :

  1. Le Secret du Consommateur de votre application
  2. Le jeton d'accès (comme indiqué sur cette page de création de signature de Twitter)

ajoutez ces deux, avec & et ensuite faites un HMAC-SHA1. Mais comment obtenir mon jeton d'accès ?

Je n'ai pas encore envoyé mon POST à Twitter, n'est-ce pas ? Le jeton d'accès ici signifie-t-il le jeton Bearer ?

La page ne mentionne même pas comment obtenir le jeton d'accès (en fait, si, mais je dois faire un POST pour obtenir ce jeton d'accès, n'est-ce pas ?)

Merci pour toute votre aide!

2voto

Jon Susiak Points 4363

La première chose à comprendre est qu'il y a plusieurs étapes à OAuth 1.0a qui est utilisé par Twitter:

Etape 1: Demander un jeton de requête non autorisé à Twitter

Etape 2: Twitter répondra avec un jeton de requête et un secret de jeton de requête

Etape 3: Envoyer l'utilisateur à Twitter avec le jeton de requête pour obtenir l'autorisation de l'utilisateur pour votre application

Etape 4: Twitter répondra avec un code de vérification

Etape 5: Envoyez le jeton de requête et le code de vérification à Twitter pour obtenir un jeton d'accès

Etape 6: Twitter répondra avec un jeton d'accès et un secret de jeton d'accès

Etape 7: Utilisez le jeton d'accès et le secret de jeton d'accès pour faire des requêtes à l'api Twitter

À chaque étape du processus, la requête doit être signée en utilisant la clé du consommateur et le secret du jeton approprié. À l'étape 1, nous n'avons que le secret du consommateur, donc la clé de signature est construite en ajoutant le caractère ampersand au secret de consommateur codé en pourcentage. Il convient également de noter ici que votre chaîne de base de signature ci-dessus manque du paramètre oauth_version et que la chaîne de base de signature ne doit pas se terminer par une virgule.

Une fois que vous avez obtenu le jeton de requête et le secret de jeton de requête (Etape 2), vous pouvez envoyer l'utilisateur à l'URL d'autorisation Twitter pour accorder l'autorisation à votre application. Cela est réalisé en ajoutant le jeton de requête à l'URL d'autorisation en tant que chaîne de requête et en demandant à l'utilisateur de visiter cette URL (Etape 3). c'est-à-dire,

https://api.twitter.com/oauth/authorize?request_token=NPxxxxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0 Notez que cette demande n'a pas besoin d'être signée.

Une fois que l'utilisateur s'est connecté à Twitter et a autorisé votre application, il recevra un code de vérification (oauth_verifier) à renvoyer à votre application (Etape 4).

Vous faites ensuite une demande à Twitter pour échanger le jeton de requête contre un jeton d'accès. Cela est réalisé en envoyant une demande signée qui inclut le code oauth_verifier à l'URL du jeton d'accès Twitter (https://api.twitter.com/oauth/access_token). La clé de signature est construite en utilisant le secret de consommateur codé en pourcentage ajouté au secret de jeton de requête codé en pourcentage en utilisant le caractère ampersand (Etape 5).

Si tout est correct, Twitter répondra avec un access_token et un access_token_secret (Etape 6). Vous pouvez utiliser ces jetons pour faire toutes les futures demandes au nom de l'utilisateur (Etape 7). La clé de signature pour ces demandes est construite en utilisant le secret de consommateur codé en pourcentage ajouté au secret de jeton d'accès codé en pourcentage en utilisant le caractère ampersand.

En guise de conclusion, un jeton porteur fait partie d'OAuth 2 qui a un flux d'autorisation complètement différent de celui d'Oauth 1.0a.

Si vous avez besoin de vérifier vos signatures OAuth, vous pouvez utiliser un utilitaire tel que celui-ci.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X