如何要求LightOpenId以checkid\u立即模式获取用户电子邮件? 房产: 我正在使用php LightOpenId通过他的google帐户对用户进行身份验证 我使用的是网站提供的标准示例(example.php)。没什么特别的 添加一行或两行以更改行为 我所有的客户都是谷歌人 要求1
我不希望我的客户端记录两次(SSO行为),因此我添加了 调用之前,如何要求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
$openid->mode=checkid\u immediate
标题…$openid->authUrl()
我遇到两个问题:
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。