2010-09-25 5 views
0

J'utilise l'API Twitter pour OAuth.Twitter API Problème: Le jeton de demande OAuth utilisant les travaux GET, le test POST échoue

J'ai réussi à faire fonctionner l'opération Demande de jetons sans problème avec GET.

Cependant, lorsque je fais exactement la même chose en utilisant POST, cela me donne l'erreur 'Echec de la validation de la signature oauth'.

Voici les différentes options papillotes j'utilise:

curl_setopt($ch, CURLOPT_URL, ''.$url_post_str.''); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_vars_arr); 
curl_setopt ($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_MAXREDIRS, 10); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); 

Pouvez-vous s'il vous plaît aider?

Merci.

Répondre

1

Je l'ai compris un peu plus tard.

Il se trouve que parce que j'utilisais un tableau pour les champs de poste à savoir

curl_setopt($ch, CURLOPT_POSTFIELDS, **$post_vars_arr**); 

le type de contenu de forme était multipart/form-data, qui ne sont pas prises en charge par l'API Twitter OAuth.

donc je devais faire imploser ce tableau à une chaîne de requête et de le transmettre à la même curl_setopt-à-dire

curl_setopt($ch, CURLOPT_POSTFIELDS, **$post_vars_str**); 

D'après ce que je comprends, lorsque vous utilisez une chaîne de requête au lieu d'un tableau, la forme le type de contenu sera application/x-www-form-urlencoded (qui est pris en charge par l'API Twitter) et non multipart/form-data.

Et c'est comme ça que j'ai réussi. J'espère que ça aide quelqu'un d'autre.

+0

J'utilise C#. Juste déplacé de V1 à V1.1 de l'API de Twitter et j'ai dû ajouter l'en-tête "Content-Type: application/x-www-forme-urlencoded; charset = UTF-8" pour que les POST fonctionnent. –

Questions connexes