Ich habe eine einfache Webseite, auf der über die Twitter-REST-API unter https://api.twitter.com/1.1/statuses/update.json erfolgreich ein Nur-Text-Tweet erstellt werden kann. Ich kann auch ein JPG-Bild mit https://upload.twitter.com/1.1/media/upload.json auf Twitter hochladen und eine Zahl media_id
erfolgreich zurückerhalten . Was ich nicht tun kann, ist diese beiden zusammenzufügen, um einen Bild-Tweet zu erstellen: Er erhält den HTTP-Statuscode 401, wenn ich die media_id hinzufüge!
Ich verwende ASP.NET (ich habe sowohl VB- als auch C # -Beispiele), aber ich gehe davon aus, dass das Problem nicht spezifisch für diese Sprache ist. Die einzigen zwei Bits des Tweet-Codes, die ich ändere, sind dort, wo der gleiche "Querystring" aufgebaut ist:
var baseFormat = "oauth_consumer_key={0}&oauth_nonce={1}&oauth_signature_method={2}&oauth_timestamp={3}&oauth_token={4}&oauth_version={5}&status={6}&media_ids={7}";
var baseString = string.Format(baseFormat, oauth_consumer_key, oauth_nonce, oauth_signature_method, oauth_timestamp, oauth_token, oauth_version, Uri.EscapeDataString(TweetText), TwitterMediaID);
und
var postBody = "status=" + Uri.EscapeDataString(TweetText) + "&media_ids=" + TwitterMediaID;
using (System.IO.Stream stream = request.GetRequestStream())
{
byte[] content = System.Text.ASCIIEncoding.ASCII.GetBytes(postBody);
stream.Write(content, 0, content.Length);
}
Alles, was dies wirklich tut, ist &media_ids=1104003004334784512
an das Ende der Zeichenfolge anzuhängen . Der Rest meines Codes ändert sich nicht.
Der JSON, den ich zurück bekomme, ist: {"errors":[{"code":32, "message":"Could not authenticate you."}]}
Wenn ich entferne, &media_ids=12345678901234567
ist der Code erfolgreich (HTTP-Statuscode 200 und viele nützliche JSON-Daten zurückgegeben).
Ich glaube nicht, dass ich spezielle Berechtigungen benötige, um einen Bild-Tweet zu erstellen, im Vergleich zu einem Nur-Text-Tweet. Ich habe verschiedene Blogs gelesen, in denen erwähnt wird, dass bei der Verwendung von media_ids zeitweise HTTP 401-Fehler aufgetreten sind, die überhaupt nichts mit Authentifizierung zu tun haben, aber keine der von ihnen angebotenen Lösungen für meine Website gilt.
Aus der Dokumentation geht hervor, dass meine media_id 2 Stunden lang gültig ist. Wie kann ich also den Authentifizierungsaspekt durcheinander bringen, wenn meine Nur-Text-Tweets in meinem Twitter-Profil angezeigt werden? OK?
Twitter erfordert, dass API-Anforderungen die OAuth 1.0a-Authentifizierung verwenden . Eine Einschränkung ist, dass die HMAC-SHA1-Signatur in einem ganz bestimmten Format erstellt werden muss.
In diesem Fall muss das baseFormat
alphabetisch sortiert sein - siehe https://developer.twitter.com/de/docs/basics/authentication/guides/creating-a-signature.html
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen