2012-09-26 40 views
4

我已經能夠成功使用Net :: OpenID :: Consumer,但是當我開始請求用戶的電子郵件地址時,Google現在會提示用戶授權分享他們的電子郵件地址。這種情況每次都會發生,無論用戶是否選中「記住此批准」複選框。我如何阻止Google每次提示用戶批准?如何正確實施Google登錄的Net :: OpenID :: Consumer並請求用戶的電子郵件?

我們網站的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,                              
    ); 

雅虎似乎沒有這個問題。我想這可能是Google的一個問題,但我敢打賭這是我的代碼。

回答

1

查看Google開發人員指南,您的應用程序URL看起來應該與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"                        
); 
+0

哦,我知道我失去了一些東西,在我最初的測試它的作品。我會在更多測試後獎勵賞金和回答。 – kbosak

+0

非常好...它的工作。 – Annjawn

+0

對於其他可能遇到此問題的人,我認爲我的真正問題是在實際代碼中,我在信任根中使用了通配符。顯然谷歌不喜歡,因爲它不完全匹配return_to域。 – kbosak

相關問題