supergarv

Garvin Hicking :: blog

An object never serves the same function as its image - or its name.

  •  
  •  
  • Über mich
  •  
  • Galerie
  •  
  • Freunde
  •  
  • Tops und Flops
  •  
  • Links
  •  
Zufallsbild
  • Über mich:
  • Vorstellung
  • Lebenslauf
  • Lebensziele
  • Gästebuch
  • Kontakt
  • News
  • Blog
  • Galerie:
  • Artwork
  • Logos
  • Web
  • DTP
  • 3D
  • Fotos
  • Videos
  • Anderes
  • Freunde:
  • Freunde
  • Familie
  • Ich
  • Webcam
  • Schule
  • Caritas
  • Arbeit
  • Anderes
  • Tops und Flops:
  • Filmkritiken
  • Texte
  • IMDB
  • Hitlisten

Kategorien

  • Blafasel
  • Media
  • Bilder
  • Bücher
  • Kino / Video
  • Sneak Preview
  • Musik
  • Spiele
  • PHP / Software
  • Planung

Fotografie von Garvin und Emba

» bei Model-Kartei
» bei Flickr

Flickr: Bilder

Medaillen

superBlog Banner
:inlove:

Macht mich glücklich:

Wunschliste Amazon / Wishlist Amazon

Blog abonnieren

  • XML
  • XML Kommentare

Powered by

Serendipity PHP Weblog

« Das Szenario | Startseite | « Kundenzufriedenheit, Service-Fails... »

Montag, 20. September 2010

Serendipity Twitter Plugin mit OAuth

Vor kurzem hat Twitter seine API derart umgestellt, dass nur noch autorisierte Anwendungen auf den Twitter-Stream mit erweiterten Funktionalitäten (und vor allem schreibend) zugreifen dürfen. Der neue Zugriff erfolgt mittels OAuth. Hier werden einzelne Anwendungen für den Zugriff konfiguriert, und das Passwort zum eigenen Twitter-Account muss nie übermittelt werden.

Die Einbindung von OAuth wurde initial dank der Hilfe von Silvio Kunze vorangetrieben. Ich habe mich am Wochenende dem Plugin angenommen, und dank des Feedbacks in der Twittersphere (Danke jpwenzel, mattsches und gethash), nun auch endgültig OAuth verstanden. Eigentlich nicht schwer, aber doch relativ umständlich einzurichten.

Die neue Twitter-Plugin-Version gibt es derzeit hier: serendipity_plugin_twitter.zip (1.23, wird nach ein paar Tests auch demnächst offiziell eingestellt)

Der grundsätzliche Workflow ist wie folgt:

1. Man installiert das Serendipity Twitter plugin (wenn nicht schon geschehen)

2. In der Konfiguration des Plugins gibt es einen neuen Button, mit dem man seine Anwendung auf Twitter.com registriert. Zudem erklärt einem das Plugin, welche Felder man mit welchen Werten man dort eintragen kann.

3. Sobald man die Anwendung (also das Plugin von euch) bei Twitter.com registriert hat, kriegt ihr auf der Folgeseite den Consumer Key und das Consumer Secret. Diese Zeichenfolge identifiziert die nur für euch registrierte Anwendung eindeutig. Diese beiden Zeichenfolgen kopiert ihr einfach in die Konfiguration des Serendipity-Plugins.

4. Nach dem speichern von Consumer Key und Secret in der Pluginkonfiguration gibt es einen neuen Button namens "Einloggen". Wenn ihr darauf klickt, kommt man zur Twitter-Seite, wo man die gerade angelegte Anwendung dazu autorisiert, auf euren Twitterstream zuzugreifen. Nach der Bestätigung der Twitter-Meldung landet ihr in eurem Blog, und die Verbindung wird als hergestellt markiert.

5. Ab jetzt könnt ihr wieder in der Startseite des Blogs eure Tweets absetzen, und beim Posten von Blogeinträgen automatisch an Twitter senden.


Ich wünschte man könnte den Prozess abkürzen, aber tatsächlich ist es von Twitter nicht vorgesehen, einfach per Link eine Anwendung mit vorausgefüllten Daten zu registrieren. Auch wäre es nicht sinnvoll eine einzelne App für alle Serendipity-Blogs zu erstellen, da ansonsten ein Missbrauch der Anwendung auswirkungen auf alle Anwender haben könnte. Abgesehen davon ist die Callback-URL ein Parameter pro Anwendung, und nicht pro Autorisierung - man müsste das Plugin also dann an zentraler Stelle als Proxy aufsetzen.

Bitte testet das Plugin bei euch, wenn ihr die Funktionalität gebrauchen könnt. Im ausführlichen Artikelteil gehe ich noch etwas spezieller auf die interne Funktionalität des Plugins ein.
Ursprünglich rief Silvios erste Version des Plugins eigenständige PHP-Dateien in einem Unterverzeichnis auf und übermittelte Consumer Key / Secret in eine Datei. Ich habe dies so umgestellt, dass der Serendipity external_plugin-Hook aufgerufen wird, und alle Parameter ausschließlich in der Datenbank gespeichert werden.

Zudem habe ich im Code einige Redundanzen entfernt. Es gibt nun quasi drei Stamm-URL-Aufrufe, die Kontakt zu OAuth vornehmen:

1. index.php?/plugin/twitteroa-redirect stellt die Verbindung zu Twitter.com her, um den Zugriff für den definierten Consumer anzufordern.

2. index.php?/plugin/twitteroa-callback ist die in der Twitter-Anwendung hinterlegte URL, die nach erfolgter Zugriffssetzung einen Authentication Token und Secret an das Plugin übermittelt und speichert.

3. index.php?/plugin/twitteroa-del löscht eine einmals autorisierte Twitter-Anwendung.


Innerhalb des Plugins ist eine zentrale Methode namens twitteroa_connect() dafür zuständig, über die eingebundene Twitter OAuth-Bibliothek einen URL-Aufruf zu tätigen. Dieser wird mit den jeweiligen Tokens signiert und authentifiziert. Die Bibliothek unterstützte ursprünglich nur cURL-URL-Handling. Hier habe ich als Fallback auch die Unterstützung von PEAR::HTTP_Request mit integriert, der Standard-Bibliothek für Serendipity-URL-Aufrufe.
Geschrieben von garvin in PHP / Software um 14:22 | Kommentare (7) | Trackbacks (2)


Trackbacks
Trackback-URL für diesen Eintrag

YellowLeds Weblog am 1284994345: twitter, are you still there?

Vorschau anzeigen
twitter hat vor kurzem seine API auf Authentifizierung via OAuth umgestellt, weshalb das Microblogging-Plugin für Serendipity, welches unter anderem Hinweise auf neue Blogeinträge twittern kann, nicht mehr funktionierte.Dank Silvio und Garvin sollte das m

Sperrobjekt Weblog am 1285145731: Twitter-Plugin lernt OAuth

Vorschau anzeigen
Nachdem Ende August die "OAuthcalypse" eintrat und Twitter externe Anwendungen seitdem nur noch per OAuth authentifiziert, musste auch das entsprechende Plugin für Serendipity angepasst werden. Am vergangenen Wochenende hat Garvin Hicking diese

Kommentare
Ansicht der Kommentare: (Linear | Verschachtelt)

Gefällt mir! :)
Nach dem Urlaub gleich mal in diversen Blogs testen...
#1 el*Loco (Link) am 20.09.2010 18:18 (Reply)
Super, danke!
Ich komme jedoch nur bis zur Registrierung. Beim Versuch des Einloggens öffnet sich ein Fenster ohne Inhalt und mein Blog wirft die Meldung

Warning: Invalid argument supplied for foreach() in /home/.sites/19/site2/web/blog/plugins/serendipity_plugin_twitter/classes/Backtweet.php on line 94

aus.
Liebe Grüße
Robert
#2 Robert Lender (Link) am 20.09.2010 23:12 (Reply)
Peinlich. Das Plugin war noch von vorher deaktiviert. Daher die Fehlermeldung. Aktiviert und sie ist weg...
#2.1 Robert Lender (Link) am 20.09.2010 23:30 (Reply)
Danke für die angepasste Version an alle Beteiligten! :-)
Ich habe das Plugin installiert und die Konfiguration hat so wie oben im Artikel beschrieben funktioniert. Die Fehlermeldung von Robert hatte ich nicht. Wenn im laufenden Betrieb noch Probleme auftauchen, melde ich mich nochmal hier.
#3 Mario (Link) am 20.09.2010 23:26 (Reply)
Ich glaube ich sollte meine Installation mal ganz neu aufsetzen. Die hat einfach Schluckauf...
#3.1 Robert Lender (Link) am 20.09.2010 23:27 (Reply)
Eine Frage kurz.
Welche Dienste benötigt das Plugin von der Serverseite aus?
Ich hab nämlich das Problem, das auf dem einen Server nur ein weißes Fenster aufgeht und wenn ich das gleiche auf einem anderen Server von einem anderen Anbieter installiere geht alles wunderbar...
Hab zur Zeit nur diesen Dienst aktiviert: "PHP-Unterstützung"
#4 Morrighan (Link) am 01.11.2010 11:52 (Reply)
Hi!

Also PHP5 mit CURL wäre das, mit dem es problemlos geht. PHP4 mit CURL geht auch -- wenn kein CURL da ist braucht man SSL-Wrapper, damit fopen/file_get_contents auch klappen kann. Das ist leider häufig nicht unbedingt gegeben.

CURL ist Default bei PHP5, jeder "gute" Provider müsste es eigentlich unterstützen...
#4.1 Garvin (Link) am 01.11.2010 19:00 (Reply)

Kommentar schreiben

BBCode-Formatierung erlaubt
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA

 
 
« Das Szenario | Startseite | « Kundenzufriedenheit, Service-Fails... »

Suche

Kalender

Zurück Dezember '23
Mo. Di. Mi. Do. Fr. Sa. So.
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Kommentare

onli zu Erweiterung Smart Home: Energie/Strom-Überwachung mit Tasmota Plugs Steckdosen und MQTT, Telegraf, InfluxDB, Grafana
Mo., 16.01.2023 18:00
Bei der Kalibrierung könnte es das Problem geben, dass die Spannung unregelmäßig schwanken wird. Ich hatte mich gewunde [...]
-thh zu Shutdown
Di., 27.03.2018 18:34
Ich prangere das an!
David zu Ich bin Dein Spoiler, Luke!
So., 20.12.2015 12:21
Sehr ähnliche Meinung zu meiner. Ich hatte erwartet, enttäuscht zu werden, so wie ich es bei JJs Star Trek wurde. Das w [...]
serotonic zu Serien 2014
Sa., 03.01.2015 16:53
+++ Voll gern gelesen +++ (Teufelskreis. Hahaha!
Andi zu Serien 2014
Sa., 13.12.2014 14:39
Achja: The Knick fehlt!

Über mich

Ich heiße Garvin Hicking, wohne in Köln und bin alt genug um ein Blog führen zu dürfen. Derzeit arbeite ich als Webentwickler bei Faktor E, bin gelegentlich selbständig tätig und arbeite mit PHP, (My)SQL und XHTML/ XML/ CSS/ JavaScript.

Meine Freizeit nutze ich zur Entwicklung von Serendipity und phpMyAdmin - und (nicht nur) wenn ich genug von Computer habe, genieße ich das Leben mit meiner Freundin Emba im Kino, hinter der Fotokamera, daheim oder bei unseren Freunden. Und ein Gesicht habe ich auch:
Garvin Hicking
Facebook / Xing

Zend Certified PHP Engineer



(c)1999-2004 by garvin hicking   |   
American English Wunschliste Amazon / Wishlist Amazon

Die Einbindung fremder Bilder erfolgt im Rahmen der journalistischen bzw. persönlichen Berichtserstattung. Urheberrechte dieser Materialien liegen beim Eigentümer.
Weiteres siehe Impressum / Datenschutzerklärung