开放ID实现PowerSchool PHP
我已经查阅了PowerSchool关于实施的文档。然而,我认为它遗漏了重要信息,即我们如何传递所需的属性。我已经研究了其他领域的示例实现。但是,它们似乎与文档所讨论的内容不同 在本例中,如何在PHP中实现PowerSchool的开放ID。经过多次努力,我已经让第三方站点成功地执行了握手,但是,没有检索到属性值,也没有错误,甚至在日志中也没有错误。PowerSchool的开放ID SSO(单点登录)当前仅在从PowerSchool的站点发起请求时才起作用。因此,从创建OpenID链接插件开始开放ID实现PowerSchool PHP,php,openid,lightopenid,powerschool,Php,Openid,Lightopenid,Powerschool,我已经查阅了PowerSchool关于实施的文档。然而,我认为它遗漏了重要信息,即我们如何传递所需的属性。我已经研究了其他领域的示例实现。但是,它们似乎与文档所讨论的内容不同 在本例中,如何在PHP中实现PowerSchool的开放ID。经过多次努力,我已经让第三方站点成功地执行了握手,但是,没有检索到属性值,也没有错误,甚至在日志中也没有错误。PowerSchool的开放ID SSO(单点登录)当前仅在从PowerSchool的站点发起请求时才起作用。因此,从创建OpenID链接插件开始 S
SSO链接插件
自定义LightOpenID 在继续之前,我们需要修改LightOpenID,因为它在属性前面加了
http://axschema.org/
因此不会返回属性值。为此:
LightOpenID.php
->axParams()
并更改
$this->aliases[$alias] = 'http://axschema.org/' . $field;
$key = substr($this->getItem($prefix . '_type_' . $key), $length);
到
LightOpenID.php
->getAxAttributes()
并更改
$this->aliases[$alias] = 'http://axschema.org/' . $field;
$key = substr($this->getItem($prefix . '_type_' . $key), $length);
到
验证并检索用户的属性 在OpenID的返回URL中指定的路径上,即,
authenticateopenid
,验证用户并检索其属性:
$openid = new LightOpenID("Insert hostname i.e., www.myopenid.com");
if ($openid->mode)
{
if ($openid->mode == 'cancel') {
echo "User has canceled authentication !";
} elseif ($openid->validate()) {
$data = $openid->getAttributes();
$email = $data['http://powerschool.com/entity/email'];
echo "</br>Email: " . $email . "</br>";
}
else {
echo "The user has not logged in";
}
}
else {
echo "Go to PowerSchool to log in.";
}
$openid=new LightOpenID(“插入主机名,即www.myopenid.com”);
如果($openid->mode)
{
如果($openid->mode=='cancel'){
echo“用户已取消身份验证!”;
}elseif($openid->validate()){
$data=$openid->getAttributes();
$email=$data['http://powerschool.com/entity/email'];
回显“电子邮件:“.$Email.””;
}
否则{
回显“用户尚未登录”;
}
}
否则{
echo“转到PowerSchool登录。”;
}
$key = $this->getItem($prefix . '_type_' . $key);
$openid = new LightOpenID("Insert hostname i.e., www.myopenid.com");
if ($openid->mode)
{
if ($openid->mode == 'cancel') {
echo "User has canceled authentication !";
} elseif ($openid->validate()) {
$data = $openid->getAttributes();
$email = $data['http://powerschool.com/entity/email'];
echo "</br>Email: " . $email . "</br>";
}
else {
echo "The user has not logged in";
}
}
else {
echo "Go to PowerSchool to log in.";
}