前提条件:
- 我使用phpLightOpenId通过他的谷歌帐户对用户进行身份验证
- 我使用的是网站上提供的标准示例(example.php)。没什么新奇的
- 添加一两行以更改行为
- 我所有的客户都是谷歌用户
要求1
我不希望我的客户端登录两次(SSO行为),所以我添加呼叫前$openid->mode=checkid_immediate
CCD_ 2。
我遇到两个问题:
-
我无法收到电子邮件,郎。。。属性。
事实上,使用checkid_immediate模式并遵循
authUrl()
我让我的用户按预期正确连接。BUT修改代码并添加
$openid->required
以收集属性在authUrl()
请求强制我的呼叫转换为checkid_setup
模式之前呼叫如何在一次调用中保持checkid_immediate模式并获取属性
-
subdomain.mydomain2.com
代码的行为与www.mydomain1.com
不同www.mydomain1.com
与checkid_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。