我正在尝试将 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。发生问题的所有用户始终具有相同的属性。
帮助将不胜感激。