Google Contacts Data API を使った Movable Type のプラグインを実装しようと思っていたのですが、ブログにユーザ増やしたところであんまり意味が見いだせなくてプラグインの実装はちょっとペンディングなんですが、でもせっかく Contacts Data API を使ったのでサンプルをのせておきます。
今回のポイントは Simon Wistow の Net::Google::AuthSub です。GData API 系で必ず使う認証の ClientLogin をラップしてくれます。ClientLogin が成功すると Google から戻って来た値をほんの少しごにょっとしなきゃならないのですが、それを隠蔽してくれるので少しきれいなコードになりますね。
このコードを実行するとメールアドレスのリストが取れます。
#!/usr/local/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request::Common;
use Net::Google::AuthSub;
use XML::LibXML;
use Data::Dumper;
my $user = 'YOUR_EMAIL_ADDRESS';
my $password = 'YOUR_PASSWORD';
my $authsub = Net::Google::AuthSub->new(service => 'cp');
my $auth_res = $authsub->login($user, $password);
unless ($auth_res->is_success) {
die 'google login is failed.'
}
my $url = "http://www.google.com/m8/feeds/contacts/$user/base";
my $req = HTTP::Request->new(GET => $url);
$req->header($authsub->auth_params);
my $res = LWP::UserAgent->new->request($req);
my $xp = XML::LibXML->new;
my $xml = $xp->parse_string($res->content);
my @emails = $xml->findnodes("/*[local-name()='feed']/*[local-name()='entry']/*[local-name()='email']");
for my $mail (@emails) {
print $mail->findvalue('@address') . "\n";
}
Comments