开放ID实现PowerSchool PHP

开放ID实现PowerSchool PHP,php,openid,lightopenid,powerschool,Php,Openid,Lightopenid,Powerschool,我已经查阅了PowerSchool关于实施的文档。然而,我认为它遗漏了重要信息,即我们如何传递所需的属性。我已经研究了其他领域的示例实现。但是,它们似乎与文档所讨论的内容不同 在本例中,如何在PHP中实现PowerSchool的开放ID。经过多次努力,我已经让第三方站点成功地执行了握手,但是,没有检索到属性值,也没有错误,甚至在日志中也没有错误。PowerSchool的开放ID SSO(单点登录)当前仅在从PowerSchool的站点发起请求时才起作用。因此,从创建OpenID链接插件开始 S

我已经查阅了PowerSchool关于实施的文档。然而,我认为它遗漏了重要信息,即我们如何传递所需的属性。我已经研究了其他领域的示例实现。但是,它们似乎与文档所讨论的内容不同

在本例中,如何在PHP中实现PowerSchool的开放ID。经过多次努力,我已经让第三方站点成功地执行了握手,但是,没有检索到属性值,也没有错误,甚至在日志中也没有错误。

PowerSchool的开放ID SSO(单点登录)当前仅在从PowerSchool的站点发起请求时才起作用。因此,从创建OpenID链接插件开始


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.";
    }