Mikro-Blogging mit Net::Twitter und OAuth
Veröffentlicht von Thomas Fahle am (Permalink)
Twitter zwingt Drittanbieter seit ein paar Tagen ein neues Authentifizierungsverfahren, OAuth, zu verwenden. Dieses Verfahren soll den Diebstahl von Passwörtern unterbinden.
Registrierung
Drittanbieter müssen Ihre Applikation zunächst unter http://twitter.com/apps registrieren.
Autorisierung
Im nächsten Schritt muss der Anwender der Applikation den Zugriff erlauben.
Das folgende Beispiel-Skript führt die Autorisierung durch und speichert alle erforderlichen Daten in eine Konfigurationsdatei.
#!/usr/local/bin/perl use strict; use warnings; use Config::Simple; use Net::Twitter; my $config_file = 'twitter.access.ini'; my $cfg = new Config::Simple( syntax => 'ini' ) or die $!; # You can replace the consumer tokens with your own; # these tokens are for the Net::Twitter example app. #my %consumer_tokens = ( # consumer_key => 'v8t3JILkStylbgnxGLOQ', # consumer_secret => '5r31rSMc0NPtBpHcK8MvnCLg2oAyFLx5eGOMkXM', #); my %consumer_tokens = ( consumer_key => 'Get_Your_Consumer_Key_From_TwitterDotComSlashApps', consumer_secret => 'Get_Your_Consumer_Secret_From_TwitterDotComSlashApps', ); my $nt = Net::Twitter->new( traits => [qw/API::REST OAuth/], %consumer_tokens ); # Autorisierung my $auth_url = $nt->get_authorization_url; print "Diese Applikation muss autorisiert werden.\n"; print "Bitte $auth_url \n"; print "in einem Browser oeffnen und den Zugang erlauben.\n"; print "Bitte Twitter-PIN eingeben: "; my $pin = <STDIN>; # Auf Eingabe warten chomp $pin; # Autorisierung mit PIN# my ( $access_token, $access_token_secret, $user_id, $screen_name ) = $nt->request_access_token( verifier => $pin ) or die $!; # Daten in Config-Datei schreiben $cfg->param( 'access_token', $access_token ); $cfg->param( 'accesss_token_secret', $access_token_secret ); $cfg->param( 'user_id', $user_id ); $cfg->param( 'screen_name', $screen_name ); $cfg->param( 'consumer_key', $consumer_tokens{consumer_key} ); $cfg->param( 'consumer_secret', $consumer_tokens{consumer_secret} ); $cfg->write($config_file) or die $!; exit;
Tweet
Im Beispiel wird die oben erzeugte Konfigurationsdatei verwendet, ein Test-Tweet erzeugt und die letzen Tweets angezeigt.
#!/usr/local/bin/perl use strict; use warnings; use Config::Simple; use Net::Twitter; my $config_file = 'twitter.access.ini'; my $cfg = new Config::Simple() or die $!; $cfg->read($config_file) or die $!; my $access_token = $cfg->param('access_token'); my $access_token_secret = $cfg->param('accesss_token_secret'); my $user_id = $cfg->param('user_id'); my $screen_name = $cfg->param('screen_name'); my $consumer_key = $cfg->param('consumer_key'); my $consumer_secret = $cfg->param('consumer_secret'); my $nt = Net::Twitter->new( traits => [qw/API::REST OAuth/], ( consumer_key => $consumer_key, consumer_secret => $consumer_secret ) ); $nt->access_token($access_token); $nt->access_token_secret($access_token_secret); $nt->update('Test Net::Twitter mit OAuth!') or die $!; my $statuses = $nt->user_timeline( { count => 10 } ); foreach my $status (@$statuses) { print $status->{text}, "\n"; } $nt->end_session(); exit;
Siehe auch
- OAuth: An open protocol to allow secure API authorization in a simple and standard method from desktop and web applications.
- /var/log/rant: Surviving the Twitpocalypse
- CPAN: Config::Simple
- CPAN: Net::Twitter
- CPAN: Net::Twitter Examples
- CPAN: Net::Twitter::OAuth
- Twitter: http://apiwiki.twitter.com/
- Zeit.de: "OAuth" soll Passwortraub bei Twitter verhindern
Fehlende Links, Ergänzungen, Anregungen?
Bitte einfach als Kommentar. Danke.