Я внедряю OpenId Connect в свое приложение Yii2, используя библиотеку yii2-authclient. Я могу войти и обменять код на токен без проблем. Я следовал большинству примеров кода в Интернете и установил функцию successCallback, которая вызывается при успешном входе пользователя в систему. Это выглядит так:
public function successCallback(ClientInterface $client)
{
$attributes = $client->getUserAttributes();
}
Этот код вызывается, но вызывает getUserAttributes()
приводит к следующей ошибке:
Исключение — yii \ authclient \ InvalidResponseException
Запрос не выполнен с кодом: 400, сообщение:
{«error»: «invalid_request», «error_description»: «Токен не предоставлен»}
Журналы на сервере идентификаторов показывают пустых клиента и пользователя, с ошибкой invalid_token
,
Я внимательно посмотрел на запрос, и я вижу access_token
элемент. Есть идеи, в чем может быть проблема? Я могу предоставить больше информации, если это необходимо.
Я понял. Проблема заключалась в том, что библиотека yii2-authclient отправляла токен в качестве параметра GET, а сервер ID ожидал его в качестве параметра POST. Я обновил библиотеку yii2-authclient, и это решило проблему, поскольку недавнее изменение отправляет параметр как POST вместо GET.
Других решений пока нет …