2009-06-09 3 views
12

Ich versuche Twitter API und OAuth zu verwenden, um Statusupdates (neue Tweets) zu senden. Ich benutze Shannon Whitley .NET Codebeispiel http://www.voiceoftech.com/swhitley/?p=681 (wie in der Twitter-API-Dokumentation empfohlen). Ich kann (GET) mit OAuth gut lesen, aber wenn ich versuche, eine Statusaktualisierung über http: //twitter.com/statuses/update.xml (mit einem POST) zu senden, gibt es eine 401 mit dem folgenden XML zurück:Twitter API + OAuth: Ich kann keine Statusupdates senden, bekomme 401

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

ich schwöre, ich habe meine Anwendung einrichten zu verwenden, lesen und schreiben, die autorisieren Seite bei Twitter (http: //twitter.com/oauth/authorize) selbst sagt „die Anwendung TweeVerbs.com (Entwicklung) von möchte die Fähigkeit zu Zugriff und Aktualisierung Ihre Daten auf Twitter. "

Dennoch heißt es immer noch "Nur-Lese-Anwendung kann nicht POST". WTF !?

Ich habe diese Fehlermeldung gegoogelt, bis ich blau im Gesicht war. Ich fand irgendwo, dass die Abfragezeichenfolgeflag paremeter oauth_access_type hinzufügen gesagt = schreiben auf die Umleitungs-URL, die Seite an den Twitter autorisieren geht, die ich getan habe, aber es gibt mir immer noch ein 401.


Wenn es hilft, hier sind die Daten, die zurück und Förde nach dem OAuth Workflow gesendet zu werden:

Anfrage Autorisieren Token:

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

Erzeugte Autorisieren Redirect URL:

http: // twitter ? .com/oauth/autorisieren oauth_token = EpyBg3nJGOmtmBjRUAsqqaGHARb2F2F2VcccqHkwio & oauth_access_type =

autorisieren Bildschirmmeldung schreiben:"Die Anwendung TweeVerbs.com (Development) möchte die Möglichkeit haben, auf Twitter auf Ihre Daten zuzugreifen und diese zu aktualisieren. Diese Anwendung plant, Twitter zu verwenden, um Sie in der Zukunft einzuloggen. Melden Sie, wenn Sie zu einem anderen Konto als Sironfoot verbinden wollen „

Get Access Token:.

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

Status Update API-Aufruf: URL - http: //twitter.com/statuses/update.XML POST Daten - oauth_consumer_key = tViV8vAt4cqSKbGdPGWT7Q & oauth_nonce = 5.707.692 & oauth_signature_method = HMAC-SHA1 & oauth_timestamp = 1244567268 & oauth_token = 19.130.957-nb89DjZhjCAzcbHUa96yRWHqlQFQIJ0AKyXpqnHt1 & oauth_version = 1,0 & status = Hello World & oauth_signature = WQA% 2bWY0IxveeSJ7G3Ewy3whh1sE% 3d

+0

'Statusaktualisierung API-Aufruf' fehlt es 'oauth_verifier'? Ich konnte nur diesen Parameter auch posten einschließlich ... Und 'oauth_callback' ... – BrunoLM

+0

Wow, es ist sowohl eine Frage als auch eine sehr gute verdichtete Twitter OAUTH Flow Memo. Rettete meinen Tag, 1000 Tage später. –

Antwort

15

Weiß nicht, was das Problem war, aber ich habe meine Anwendungsregistrierung auf Twitter gelöscht (Sie müssen Apps in Twitter registrieren, um OAuth-Schlüssel usw. zu erhalten) und dann neu erstellt werden. Jetzt funktioniert es gut. Seltsam, wahrscheinlich ein Problem mit Twitter vermasseln.

Ich benutze auch Tweetsharp (http://tweetsharp.com/), sehr zu empfehlen, es hat eine schöne fließende API. Hinweis: Das Umschalten auf Tweetsharp war nicht der Fix, ich hatte bereits umgeschaltet und hatte das gleiche Problem, bis ich die App-Registrierung auf Twitter lösche und neu erstellte.

+1

das mein Problem auch gelöst hat ... es scheint, Twitter hat das Problem, eine schreibgeschützte App zu lesen, schreiben zu schreiben. – sean

+1

Gelöscht und neu erstellt die Twitter App. Ich glaube nicht, dass ich das zweite Mal etwas anderes gemacht habe, aber es hat funktioniert. – IMAbev

+0

Danke! Das rettet mir wirklich das Leben. Twitter hat einen Bug dafür. –

0

Ich habe das nicht schon mehrere Male, ohne Erfolg, bekomme ich eine 401-Ausnahme bei der Anforderung eines Zugriffs Tokens von Twitter.

Ich verwende Tweetsharp so gut wie Sie.

8

Wenn Sie Ihre Anwendung autorisiert haben, auf Ihr Twitter-Konto zuzugreifen, wenn die Anwendung im Modus "schreibgeschützt" aktiviert wurde und Sie die Anwendung "Schreibgeschützte Anwendung kann nicht POST" erhalten, nachdem Sie die Anwendungseinstellungen "lesen und schreiben" geändert haben Zugriff "dann müssen Sie den Zugriff auf die Anwendung auf https://twitter.com/settings/connections widerrufen und dann erneut autorisieren. Das "read only" access_token ist eher sticky, bis Sie es widerrufen.

+0

Nur total gerettet mein Leben!Ich habe eine Stunde lang mit "Nur-Lese-Anwendung kann nicht posten" gekämpft ... Ich habe die App mehrmals neu erstellt, aber jedesmal wurden Zugriffstoken generiert, bevor die Anwendung die Option "Lesen/Schreiben" eingab. – mcmil

+0

Perfekt :) :) thnx .. das hat mir sehr geholfen :) – Apoorva

1

plus sehen Sie auch, wenn die Uhr Ihres Systems mit Internet synchronisiert wird; auf Windows können Sie es tun, indem Sie Datum Zeit Einstellungen

, weil wenn Sie CLOCK nicht synchronisiert ist, erhalten Sie 401 nicht autorisierte Ausnahme; viel Glück prost

+0

Spot auf - das ist mir passiert - danke für das Posten, da es mir erlaubt, mein Problem zu beheben – Graeme

Verwandte Themen