我刚刚使用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 还要继续强迫他们接受呢?如果在获得他们的 OpenID 标识符之前我无法确认他们有或没有帐户,我怎么能不将这些字段标记为必填项?