4

Net :: OpenID :: Consumerを使用することはできましたが、ユーザーのメールアドレスをリクエストし始めると、Googleはユーザーにメールアドレスの共有を承認するように求めるようになりました。これは、ユーザーが[この承認を記憶する]チェックボックスをオンにするかどうかに関係なく、毎回発生します。Googleがユーザーに毎回承認を求めないようにするにはどうすればよいですか?

当サイトのOpenID登録とログインパスは同じですが、それ以外の場合は、ユーザーが登録したときにのみGoogleにメールアドレスをリクエストできます。

十分な関連コードを投稿してみます(これはダンサーアプリです)。

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,                                                                                                                     
    );

Yahooにはこの問題はないようです。これはGoogle側の問題かもしれないと思いますが、それは私のコードだと思います。

4

1 に答える 1

1

Googleデベロッパーガイドを見るとopenid.realm、認証ページなしでスムーズにログオンするには、アプリケーションのURLがOpenIDリクエストのパラメータの値と一致している必要があるようです。required_rootそうは言っても、に一致するようにtrust_rootを指定する必要があると思います。

my $csr = Net::OpenID::Consumer->new(                                                                                                            
    ua => LWP::UserAgent->new(),                                                                                                                 
    consumer_secret => $secret,   
    required_root => "http://my.site.com"                                                                                            
);
于 2012-10-05T19:49:39.330 に答える