Google 的 OpenID 服務有提供 OpenID Attribute Exchange 1.0 (參考「Federated Login for Google Account Users」這個網頁), 測了一陣子才知道要怎麼透過 Perl 的 Net::OpenID::Consumer 取得資料:
my $csr = Net::OpenID::Consumer->new(
ua => LWPx::ParanoidAgent->new,
args => {},
consumer_secret => 'secret',
required_root => 'http://.../',
minimum_version => 2
);
my $claimed_identity = $csr->claimed_identity('https://www.google.com/accounts/o8/id');
$claimed_identity->set_extension_args(
'http://openid.net/srv/ax/1.0',
{
mode => 'fetch_request',
required => 'email',
'type.email' => 'http://axschema.org/contact/email',
}
);
my $check_url = $claimed_identity->check_url(
delayed_return => 1,
return_to => 'http://.../...',
trust_root => 'http://.../'
);
say $check_url;之前會試不出來,主要是卡在 type.email 忘記加,加上去的時候又打成 email…
