如何要求LightOpenId在checkid_immediate模式下获取用户电子邮件


How to ask LightOpenId to get the users email in checkid_immediate mode?

前提条件:

  • 我使用phpLightOpenId通过他的谷歌帐户对用户进行身份验证
  • 我使用的是网站上提供的标准示例(example.php)。没什么新奇的
  • 添加一两行以更改行为
  • 我所有的客户都是谷歌用户

要求1

我不希望我的客户端登录两次(SSO行为),所以我添加呼叫前$openid->mode=checkid_immediateCCD_ 2。

我遇到两个问题:

  1. 我无法收到电子邮件,郎。。。属性。

    事实上,使用checkid_immediate模式并遵循authUrl()我让我的用户按预期正确连接。

    BUT修改代码并添加$openid->required以收集属性在authUrl()请求强制我的呼叫转换为checkid_setup模式之前呼叫

    如何在一次调用中保持checkid_immediate模式并获取属性

  2. subdomain.mydomain2.com代码的行为与www.mydomain1.com不同www.mydomain1.comcheckid_immediate配合良好。具有相同代码的CCD_ 11被转换为CCD_。

    如何使用不同于www的子域保持checkid_immediate模式

    问题#2自行解决!!!清除缓存并重新启动Google Chrome后

提前谢谢。

从0.5开始,authUrl方法有一个可选的bool参数要立即检查。尝试:

if (!$openid->mode && !empty($storedIdentity)) {
  $openid->identity = $storedIdentity;
  $openid->required = array('contact/email', 'pref/language');
  header('Location: ' . $openid->authUrl(true));
}

*已编辑代码示例,以包含问题的请求属性。这假定$storedIdentity是以前从checkid_setup返回的标识url。