У меня есть реализация сервера phpleague / oauth2, которая работает нормально, т.е. генерирует токены доступа / обновления, проверяет и т. Д.
У меня есть следующая проблема. Когда я обновляю токен с помощью grant_type = refresh_token с помощью curl консоли, я успешно получаю новый access_token, но при выполнении этого теста:
$I->sendPOST('access_token', [
'grant_type' => 'password',
'client_id' => '111',
'client_secret' => '222',
'username' => 'exampleuser',
'password' => 'examplepass',
]);
$I->seeResponseCodeIs(200);
$I->seeResponseContainsJson(['token_type' => 'Bearer']);
// I receive a proper string, checked that out
$token = $I->grabDataFromResponseByJsonPath('$.refresh_token')[0];
$I->sendPOST('access_token', [
'grant_type' => 'refresh_token',
'client_id' => 1,
'client_secret' => 'pass2',
'refresh_token' => $token
]);
$I->seeResponseCodeIs(200); // Here I receive 403
...
Повторяю, ручная работа в терминале работает нормально.
После отладки я обнаружил, что проверка токенов обновления не удалась
по адресу oauth2-server / src / Grant / RefreshTokenGrant.php по адресу:
$refreshToken = $this->decrypt($encryptedRefreshToken);
Но все же я не могу понять, почему это работает вручную. Я сделал urlencode / urldecode и кучу дампов var, но все еще не могу найти решение.
Задача ещё не решена.
Других решений пока нет …