LightOpenIDを使用して OpenID を PHP Web アプリに統合しました。
OpenID を使用して (たとえば、Google 経由で) ログインしようとすると、名前やメール アドレスなどの個人情報を入力する必要があります (実際に入力します)。「Google でログイン」ボタンをクリックすると、基本的に次のコードが実行されます。
$openid = new LightOpenID($app['request']->getHttpHost());
$openid->required = array('namePerson/first', 'namePerson/last', 'contact/email', 'pref/language');
$openid->identity = 'https://www.google.com/accounts/o8/id';
return $app->redirect($openid->authUrl(), 303);
これにより、ユーザーは Google にリダイレクトされ、次のプロンプトが表示されます。
そして、それらを私のサイトに返します。
ユーザーがログインしようとするたびに (登録後であっても)、Google がそのプロンプトを表示することを除いては、これで問題ありません。私は彼らの名前などを「要求」したので、これを行っていると思います。しかし、Google が既に私のアプリに許可を与えているのに、なぜ Google は彼らに同意を強要し続けるのでしょうか? また、OpenID 識別子を取得するまでアカウントを持っているかどうかを確認できない場合、これらのフィールドを必須としてマークしないようにするにはどうすればよいでしょうか?