0

我正在尝试将 oauth2 集成到 moodle 站点中。我必须对 php 代码进行一些更改,以便它与隐式授权一起使用。

当我测试时,我能够从提供者(政府实体)检索我的所有信息/属性。但是由于某种原因,对于某些用户来说,有一个特定的属性,它会检索一个 NULL 值。

实体返回属性所需的机制如下:

  • 用户进入实体网站(询问授权端点)。

  • 使用 CMD(葡萄牙语是 Chave móvel digital 或英语移动数字键)的用户插入 PIN。

  • 然后,代码应发送带有用户信息端点和正文的 POST 消息 {"token": "0e3e71b6-5ce5-462d-bb1c-b27b83c51e1f","attributesName":[LIST_OF_ATTRIBUTES]}

  • 然后这将返回其他令牌和 authenticationContextID。

  • 然后应该使用用户信息端点和带有令牌和 authenticationContextID 的查询字符串发出 GET 请求。

  • 最后,提供者应以 JSON 格式返回属性列表及其值。

某些用户发生的情况是其中一个值带有 null,但对于其他用户,该值正常返回。

我们询问提供者,他们说正在返回值,实际上如果我们在浏览器中输入上面提到的 GET 请求,值就在那里。

我正在使用 lib>filelib 中的 moodle 的 get 和 post 函数。

对于某些用户返回值但对于其他用户返回 null 的代码可能会发生什么情况?

这是我在 lib/classes/oauth2/client.php 中用于 get_userinfo ($token) 的代码

$url = $this->get_issuer()->get_endpoint_url('userinfo');

$params=array('token'=>$token, 'attributesName'=>$this->scope);

$result = $this->post($url, $this->build_post_data($params));

$obj=json_decode($result);

$param1=array('token'=>$obj->token,'authenticationContextId'=>$obj->authenticationContextId);

$response = $this->get($url,$param1);

然后当我打印 $response 时,某个属性具有值:Null。发生问题的所有用户始终具有相同的属性。

帮助将不胜感激。

4

0 回答 0