Я работаю над проектом, в котором сторонние приложения могут получать доступ к данным с сервера Laravel. Я также создал клиентское приложение в laravel для тестирования.
Следующий код запрашивает авторизацию и работает нормально.
Route::get('/applyonline', function () {
$query = http_build_query([
'client_id' => 5,
'redirect_uri' => 'http://client.app/callback',
'response_type' => 'code',
'scope' => '',
]);
return redirect('http://server.app/oauth/authorize?'.$query);
});
Как я могу аутентифицировать пользователя перед авторизацией? Прямо сейчас я могу получить доступ к серверу формы данных, используя этот код.
Route::get('/callback', function (Request $request) {
$http = new GuzzleHttp\Client;
$response = $http->post('http://server.app/oauth/token', [
'form_params' => [
'grant_type' => 'password',
'client_id' => 2,
'client_secret' => 'fcMKQc11SwDUdP1f8ioUf8OJwzIOxuF8b2VKZyip',
'username'=> '[email protected]',
'password' => 'password',
],
]);
$data = json_decode((string) $response->getBody(), true);
$access_token = 'Bearer '. $data['access_token'];
$response = $http->get('http://server.app/api/user', [
'headers' => [
'Authorization' => $access_token
]
]);
$applicant = json_decode((string) $response->getBody(), true);
return view('display.index',compact('applicant'));
});
Хотя приведенный выше код работает нормально, я не думаю, что это хороший способ запросить имя пользователя и пароль на стороне клиента.
Я хочу использовать этот поток (так же, как позволяет facebook)
- Нажмите, чтобы получить данные с сервера
- Введите имя пользователя и пароль
- Авторизовать приложение
- Данные доступа для аутентифицированного пользователя