如何要求LightOpenId以checkid\u立即模式获取用户电子邮件? 房产: 我正在使用php LightOpenId通过他的google帐户对用户进行身份验证 我使用的是网站提供的标准示例(example.php)。没什么特别的 添加一行或两行以更改行为 我所有的客户都是谷歌人 要求1

如何要求LightOpenId以checkid\u立即模式获取用户电子邮件? 房产: 我正在使用php LightOpenId通过他的google帐户对用户进行身份验证 我使用的是网站提供的标准示例(example.php)。没什么特别的 添加一行或两行以更改行为 我所有的客户都是谷歌人 要求1,php,openid,lightopenid,Php,Openid,Lightopenid,我不希望我的客户端记录两次(SSO行为),因此我添加了 调用之前,$openid->mode=checkid\u immediate 标题…$openid->authUrl() 我遇到两个问题: 我无法收到电子邮件,朗。。。属性 事实上,使用checkid\u立即模式,然后使用authUrl() 我让我的用户按预期正确连接 但是修改代码并添加$openid->required以收集属性 之前的authUrl()请求会强制将我的调用转换为checkid\u设置模式 打电话 如何在一次通话中保持ch

我不希望我的客户端记录两次(SSO行为),因此我添加了 调用之前,
$openid->mode=checkid\u immediate
标题…$openid->authUrl()

我遇到两个问题:
  • 我无法收到电子邮件,朗。。。属性

    事实上,使用checkid\u立即模式,然后使用
    authUrl()
    我让我的用户按预期正确连接

    但是修改代码并添加
    $openid->required
    以收集属性 之前的
    authUrl()
    请求会强制将我的调用转换为
    checkid\u设置
    模式 打电话

    如何在一次通话中保持checkid\u立即模式并获取我的属性?

  • subdomain.mydomain2.com
    code的行为与
    www.mydomain1.com
    www.mydomain1.com
    checkid\u immediate
    配合使用效果良好。 具有相同代码的
    subdomain.mydomain2.com
    将转换为
    checkid\u setup
    调用

    如何使用不同于www的子域保持
    checkid\u立即
    模式?

    问题#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\u安装程序返回的标识url。

    我尝试过,但没有成功。我仍然无法从上面扩展的“checkid\u immediate”中的属性获取电子邮件。该示例应以与正常相同的方式返回属性。当$openid->mode==“id\u res”时,$openid->getAttributes()就可以访问它们。如果您仍然无法实现此功能,那么代码中的其他地方可能存在问题,或者您可能正在使用旧版本的LightOpenID。此外,LightOpenID::authUrl方法在生成URL时不使用LightOpenID::mode属性。在调用authUrl之前设置此选项将无效。希望这有助于$storedIdentity应该是第一次checkid_设置后保存在cookie中的标识url。如果您使用常规的Google url,或者用户已将其帐户与您的域解除链接,则返回的模式将设置为“id_res”,但没有属性,validate()将返回false。