我已经成功使用Net :: OpenID :: Consumer,但当我开始请求用户的电子邮件地址时,Google现在会提示用户授权共享他们的电子邮件地址。无论用户是否选中“记住此批准”复选框,都会每次都发生这种情况。如何让Google每次都不提示用户进行审批?
我们网站的OpenID注册和登录路径相同,否则我们只能在用户注册时向Google请求电子邮件地址。
我会尝试发布足够的相关代码(这是一个Dancer应用)。
my $csr = Net::OpenID::Consumer->new(
ua => LWP::UserAgent->new(),
consumer_secret => $secret,
);
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',
'type.email' => 'http://axschema.org/contact/email',
'required' => 'email',
});
my $check_url = $claimed_identity->check_url(
return_to => 'http://my.site.com/openid_landing',
trust_root => 'http://my.site.com',
delayed_return => 1,
);
雅虎似乎没有这个问题。我想这可能是谷歌的一个问题,但我认为这是我的代码。
答案 0 :(得分:1)
查看Google开发人员指南,您的应用程序网址应与OpenID请求中的openid.realm
参数值相匹配,以便在没有授权页面的情况下顺利登录。说完这个,我想你应该指定required_root
来匹配trust_root
,比如 -
my $csr = Net::OpenID::Consumer->new(
ua => LWP::UserAgent->new(),
consumer_secret => $secret,
required_root => "http://my.site.com"
);