Php Yii2 OpenId连接错误-Yii2 authclient返回400错误“;“未提供代币”;当我尝试获取userattributes()时
我正在使用yii2authclient库将OpenId连接到我的Yii2应用程序中。我可以登录并将代码交换为令牌,没有问题。我遵循了web上的大多数代码示例,设置了一个successCallback函数,一旦用户成功登录,就会调用该函数。看起来是这样的:Php Yii2 OpenId连接错误-Yii2 authclient返回400错误“;“未提供代币”;当我尝试获取userattributes()时,php,yii2,openid-connect,yii2-authclient,Php,Yii2,Openid Connect,Yii2 Authclient,我正在使用yii2authclient库将OpenId连接到我的Yii2应用程序中。我可以登录并将代码交换为令牌,没有问题。我遵循了web上的大多数代码示例,设置了一个successCallback函数,一旦用户成功登录,就会调用该函数。看起来是这样的: public function successCallback(ClientInterface $client) { $attributes = $client->getUserAttributes(); } 调用此代码,但调
public function successCallback(ClientInterface $client)
{
$attributes = $client->getUserAttributes();
}
调用此代码,但调用getUserAttributes()
会导致以下错误:
异常–yii\authclient\InvalidResponseException请求失败,代码:400,消息:
{“错误”:“无效的请求”,“错误描述”:“未提供令牌”} id服务器上的日志显示一个空的客户端和用户,错误为
无效\u令牌
我仔细查看了我发出的请求,看到了一个
access\u令牌
元素。你知道问题出在哪里吗?如有必要,我可以提供更多信息。我想出来了。问题在于,yii2 authclient库将令牌作为GET参数发送,而ID服务器希望它作为POST参数。我升级了Yi2 authclient库,解决了这个问题,因为最近的一次更改将参数作为POST而不是GET发送。更多信息:下面是我点击的URL:https://id.dev.[url已删除].com/auth/realms/terradatum/protocol/openid connect/userinfo?access_token=eyJhb[token的其余部分已删除]
并且我得到了以下响应:{“错误”:“无效请求”,“错误描述”:“未提供令牌”}