我刚刚使用LightOpenID将OpenID集成到我的PHP网络应用中。
当您第一次尝试使用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会给出提示。我认为它是这样做的,因为我“需要”他们的名字等。但是,如果谷歌已经给予我的应用程序许可,为什么谷歌会继续强迫他们接受?如果在获得OpenID标识符之前我无法确认他们是否拥有帐户,我将如何不标记这些字段?
答案 0 :(得分:1)
尝试$ openid->领域
$openid = new LightOpenID($app['request']->getHttpHost());
$openid->required = array('namePerson/first', 'namePerson/last', 'contact/email', 'pref/language');
$openid->realm = 'http://your.site.web/';
$openid->identity = 'https://www.google.com/accounts/o8/id';
return $app->redirect($openid->authUrl(), 303);
编辑:但我不知道它是否适用于'namePerson / first','namePerson / last'......
答案 1 :(得分:1)
是的,Google正在显示,因为您要求提供相关信息。这就是Google设置OpenID工作流程的方式,您无法对其进行更改。
某些OpenID提供程序(例如myopenid和我构建的提供程序)有一个“记住我”选项,可以阻止此提示出现。