2009-06-09 11 views
12

J'essaie d'utiliser l'API de Twitter et OAuth pour envoyer des mises à jour de statut (nouveaux Tweets). J'utilise Shannon Whitley Exemple de code .NET http://www.voiceoftech.com/swhitley/?p=681 (comme recommandé sur les docs de l'API Twitter). Je peux lire (GET) en utilisant OAuth très bien, cependant quand j'essaie d'envoyer une mise à jour de statut via http: //twitter.com/statuses/update.xml (en utilisant un POST), il renvoie un 401 avec le code XML suivant:Twitter API + OAuth: Impossible d'envoyer des mises à jour de statut, obtenant 401

<?xml version="1.0" encoding="UTF-8"?> 
<hash> 
    <request>/statuses/update.xml</request> 
    <error>Read-only application cannot POST</error> 
</hash> 

Je te jure que je l'ai mis en place mon application à utiliser lire et écrire, la page sur Twitter Authorize (http: //twitter.com/oauth/authorize) dit même « l'application TweeVerbs.com (développement) par souhaitez la possibilité d'accéder à et mettre à jour vos données sur Twitter. "

Pourtant, il est toujours dit "L'application en lecture seule ne peut pas POST". WTF !?

J'ai googlé ce message d'erreur jusqu'à ce que j'étais bleu dans le visage. J'ai trouvé quelque part que dit ajouter le querystring paremeter oauth_access_type = écrire à l'URL de redirection qui va à la Twitter autorise la page que je l'ai fait, mais il me donne encore 401.


Si elle aide, voici les données qui se renvoyé et liman selon le flux OAuth:

Demande Autorisez Token:

http: //twitter.com/oauth/request_token oauth_consumer_key = tViV8vAt4cqSKbGdPGWT7Q & oauth_nonce = 2790042 & oauth_signature_method = HMAC-SHA1 & oauth_timestamp = 1244567068 & oauth_version = 1,0 & oauth_signature = KzxcXN% 2bQ0AJoAJ% 2flQfzs8SLjC% 2fQ% 3d

généré Autorisez Redirect URL:

http: // twitter ? .com/oauth/autoriser oauth_token = EpyBg3nJGOmtmBjRUAsqqaGHARb2F2F2VcccqHkwio & oauth_access_type = écrire

Autorisez message de l'écran:"L'application TweeVerbs.com (Développement) par souhaitez la possibilité d'accéder et de mettre à jour vos données sur Twitter. Cette application prévoit d'utiliser Twitter pour vous connecter à l'avenir. Inscrivez-vous si vous voulez vous connecter à un compte autre que Sironfoot «

Get jeton d'accès:.

http: //twitter.com/oauth/access_token oauth_consumer_key = tViV8vAt4cqSKbGdPGWT7Q & oauth_nonce = 2016804 & oauth_signature_method = HMAC-SHA1 & oauth_timestamp = 1244567166 & & oauth_token = EpyBg3nJGOmtmBjRUAsqqaGHARb2F2F2VcccqHkwio oauth_version = 1,0 & oauth_signature =% 2bEVQUxUPLT% 2b% 2bkfaG0Vq1YJZXcAw% 3d

Mise à jour de l'état Appel de l'API: URL - http: //twitter.com/statuses/update.xml données POST - oauth_consumer_key = tViV8vAt4cqSKbGdPGWT7Q & oauth_nonce = 5707692 & oauth_signature_method = HMAC-SHA1 & oauth_timestamp = 1244567268 & oauth_token = 19130957-nb89DjZhjCAzcbHUa96yRWHqlQFQIJ0AKyXpqnHt1 & oauth_version = 1,0 & status = HelloWorld & oauth_signature = wqa% 2bWY0IxveeSJ7G3Ewy3whh1sE% 3d

+0

'L'appel de l'API de mise à jour de l'état 'ne manque-t-il pas' oauth_verifier'? Je ne pouvais que poster ce paramètre aussi ... Et 'oauth_callback' ... – BrunoLM

+0

Wow, c'est à la fois une question et un très bon condensé Twitter mémo flow oauth. Sauvé ma journée, 1000 jours plus tard. –

Répondre

15

Je ne connaissais pas le problème, mais j'ai supprimé mon inscription à la demande sur Twitter (vous devez enregistrer des applications sur Twitter pour obtenir les clés OAuth, etc.), puis la recréer. Maintenant ça fonctionne bien. Bizarre, probablement un problème avec Twitter foireux.

J'utilise aussi Tweetsharp (http://tweetsharp.com/), je le recommande vivement, il a une belle API fluide. Note: Passer à Tweetsharp n'était pas la solution, j'avais déjà basculé et j'ai eu le même problème jusqu'à ce que je supprime et recréais l'enregistrement de l'application sur Twitter.

+1

qui a résolu mon problème aussi ... il semble que Twitter a du mal à changer une application en lecture seule en lecture-écriture. – sean

+1

Supprimé et recréé l'application Twitter. Je ne pense pas avoir fait quelque chose de différent la deuxième fois mais ça a marché. – IMAbev

+0

Merci! Cela me sauve vraiment la vie. Twitter a un bug pour cela. –

0

Je l'ai fait plusieurs fois maintenant, sans succès, je reçois une exception 401 en demandant un jeton d'accès de Twitter. J'utilise Tweetsharp aussi bien que vous.

8

Si vous avez autorisé votre application à accéder à votre compte Twitter lorsque l'application a été définie en mode "accès en lecture seule" et que l'erreur "Lecture seule impossible" s'affiche après avoir modifié les paramètres d'application accès "alors vous devez révoquer l'accès à l'application sur https://twitter.com/settings/connections puis réautorisez-le. Le "read only" access_token a tendance à être collant jusqu'à ce que vous le révoquiez.

+0

Juste totalement sauvé ma vie!Je luttais avec "l'application en lecture seule ne peut pas poster" pendant une heure ... J'ai recréé l'application plusieurs fois, mais chaque fois que les jetons d'accès ont été générés avant l'application "lecture/écriture" option. – mcmil

+0

Parfait :) :) thnx .. cela a beaucoup aidé :) – Apoorva

1

ainsi que de voir si l'horloge de votre système est synchronisée avec Internet; sur les fenêtres, vous pouvez le faire en ajustant les paramètres de l'heure de la date

parce que si vous ne synchronisez pas l'horloge, vous obtiendrez une exception 401 non autorisée; bonne chance acclamations

+0

Spot sur - cela m'est arrivé - merci de l'avoir publié car cela m'a permis de résoudre mon problème – Graeme

3
  • Aller à http://www.twitter.com/oauth_clients
  • Sélectionner App.
  • Modifier le paramètre d'application.
  • Définir le type d'accès par défaut sur Read & Write.
  • Enregistrer & Exécuter.

Espérons que cela aide.