Я пытаюсь получить информацию о пользователе после аутентификации с использованием auth0 PHP SDK. Это на моем локальном хосте с помощью ngrok. Я просто использую базовые файлы примеров в SDK и могу нормально входить в систему. Тем не менее, после входа в систему, когда он перенаправляет на мой URL-адрес обратного вызова и пытается обменять код авторизации, я получаю ошибку 401 с «неавторизованным».
Вот ошибка в wamp:
В журналах видно, что вход в систему прошел успешно, но при попытке обмена кодом авторизации происходит сбой.
Я также могу подтвердить, что я получаю код и состояние обратно в параметрах моего запроса:
https://myurl.ngrok.io/auth/?code=ygKukP3B5_xk0pbb&state=5ae5b7a643aa46.52329844
Я сделал несколько небольших изменений в файлах примеров, пытаясь заставить это работать, но я не думаю, что это виновник. На всякий случай вот код:
require 'vendor/autoload.php';
//require 'dotenv-loader.php';
use Auth0\SDK\Auth0;
$domain = 'mydomain.auth0.com';
$client_id = 'MYCLIENT';
$client_secret = 'MYSECRET';
$redirect_uri = 'https://myurl.ngrok.io/auth/';
$auth0 = new Auth0([
'domain' => $domain,
'client_id' => $client_id,
'client_secret' => $client_secret,
'redirect_uri' => $redirect_uri,
'persist_id_token' => true,
'persist_refresh_token' => true,
'audience' => 'https://mydomain.auth0.com/userinfo',
'scope' => 'openid profile'
]);
if (isset($_REQUEST['logout'])) {
$auth0->logout();
session_destroy();
header("Location: /");
die();
}
if(isset($_REQUEST['code'])) {
$userInfo = $auth0->getUser();
var_dump($userInfo);
} else {
$auth0->login();
}
UPDATE:
Я также заметил, что при первой загрузке страницы я получаю ранее упомянутую ошибку. Если я обновлю страницу, я получу Fatal error: Uncaught Auth0\SDK\Exception\CoreException: Invalid state