lundi 4 juin 2007

Un auth google en dix lignes

Comme vous ne le savez sûrement pas, pour apparaître loggué sur un service google, il faut rajouter :
Authorization: GoogleLogin auth=yourAuthToke

à l'entête HTTP de votre requête. Il existe sans doute d'autres façons de faire, mais celle-ci parait la plus simple, étant donné qu'elle ne nécessite pas la gestion d'un vrai navigateur.
Voilà un bout de code qui fait ça en dix lignes.
Le but étant d'obtenir ce fameux
yourAuthToke

use LWP::UserAgent;
my ($email, $password) = @ARGV;
my $ua = LWP::UserAgent->new;
my $url = 'https://www.google.com/accounts/ClientLogin';
my $response = $ua->post ($url,
[ Email => $email,
Passwd => $password,
source => 'web2-coincoin-0.0',
service => 'blogger' ] );
$response->is_success or die "Failed to login : ", $response->status_line;
foreach (split '/n', $response->as_string){
print $2 and last if ($_ =~ /(Auth=)(.*)/)
}

Le parser est un peu à l'arrache, mais il a l'avantage d'être rapide et tolérant. Il doit quand même y avoir mieux :-p
Ici le service "blogger" est passé en dur il peut-être bien sûr paramétré. Mais doit appartenir à la liste suivante :

Calendar data APIcl
Blogger data APIblogger
Google Base data APIgbase
Spreadsheets data APIwise
Google Apps Provisioning APIapps
Picasa Web Albums Data APIlh2


C'est là que ça se passe : http://code.google.com/support/bin/answer.py?answer=62712&topic=10433

Aucun commentaire:

Enregistrer un commentaire