2010-03-27 4 views
0

J'essaie de créer une extension Google Chrome qui enverra des liens intéressants vers Twitter. Mais, je suis incapable de me connecter à Twitter. Le serveur reçoit ma demande, mais la réponse est toujours la même: "Vous n'avez pas l'autorisation d'accéder à /1/statuses/update.json sur ce serveur (403 Interdit)." J'utilise Wireshark pour inspecter les réponses Http. Voici le code de la fonction que j'utilise:Problème avec l'API twitter: impossible de mettre à jour le statut

function setStatus(msg) { 
var status = "status="+msg; 
var client = new XMLHttpRequest(); 
client.open("POST","http://api.twitter.com/1/statuses/update.json"); 
client.setRequestHeader("Authorization", "Basic <user credentials>"); 
client.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
client.onreadystatechange = function(){ 
     if(client.readyState ==4){ 
      //whatever 
     } 
    } 
client.send(status); 

Est-ce que je fais quelque chose de mal? J'utilise Basic Auth. J'utilise this tool pour faire l'encodage, et je mets juste le résultat à la place de la partie "informations d'identification de l'utilisateur". Aussi, quelqu'un peut-il me donner un exemple d'OAuth?

+0

S'il vous plaît laissez-moi savoir si ma réponse vous a aidé alors :-) –

+0

utilisez-vous client.setRequestHeader ("Autorisation", "De base" + Base64.encode ("utilisateur: mot de passe")); ? (le colon est important ...) – Karussell

Répondre

1

J'ai déjà posté ce qui était le problème, mais pour une raison quelconque, ce poste est manquant. Peu importe, voici ce qui s'est passé: L'exemple de code que j'ai donné dans le premier message était correct, mais j'ai fait une erreur dans le fichier manifeste. Le fichier manifeste contient la section "permissions" - j'avais besoin de lister tous les liens que l'extension allait utiliser. J'ai oublié de lister "http://api.twitter.com" et c'était le problème. Quand j'ai ajouté ce lien, tout a commencé à fonctionner. Merci pour vos suggestions et réponses.

0

Utilisez /account/verify_credentials pour vérifier d'abord votre authentification, vous avez peut-être fait des erreurs avec l'encodage, ou le mot de passe est tout simplement faux.

+0

J'ai essayé votre solution - Je reçois toujours le code de réponse 403. Soit je fais constamment une erreur avec l'en-tête d'authentification, ou quelque chose d'autre est faux :( –

0

Vous devez également être en mesure de le faire:

client.open("POST","https://screen_name:[email protected]/1/statuses/update.json"); 

et ne pas vous soucier de changer les en-têtes de demande.

Questions connexes