0

我刚刚使用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 标识符之前我无法确认他们有或没有帐户,我怎么能不将这些字段标记为必填项?

4

2 回答 2

1

是的,您是正确的,因为您要求提供信息,所以 Google 正在显示。这就是 Google 设置 OpenID 工作流程的方式,您无法更改。

一些 OpenID 提供者(例如 myopenid,以及我构建的那个)有一个“记住我”选项,这将阻止此提示出现。

于 2013-12-18T05:14:06.707 回答
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'...

于 2013-11-11T12:51:49.230 回答