я использую oauth2-сервера Laravel для моего API. Я хочу предоставить приложения клиентам, использующим мой API (Android, Windows, IOS и Интернет). Поэтому я реализовал следующий способ.
мои данные таблицы следующим образом
oauth_clients Таблица
+————+———+———+———————+———————+
| ID | секрет | имя | создал_ат | updated_at |
+————+———+———+———————+———————+
| 123456789 | секрет1 | веб | 2015-08-10 00:00:00 | 2015-08-10 00:00:00 |
| 234567890 | секрет2 | win_app | 2015-08-10 00:00:00 | 2015-08-10 00:00:00 |
+————+———+———+———————+———————+
oauth_scopes Таблица
+———+———————+———————+———————+
| id | описание | создал_ат | updated_at |
+———+———————+———————+———————+
| scope1 | доступ гостевого уровня | 2015-08-10 00:00:00 | 2015-08-10 00:00:00 |
| scope2 | доступ на уровне администратора | 2015-08-10 00:00:00 | 2015-08-10 00:00:00 |
+———+———————+———————+———————+
oauth_client_scopes Таблица
+—-+————+———-+———————+———————+
| id | client_id | scope_id | создал_ат | updated_at |
+—-+————+———-+———————+———————+
| 1 | 234567890 | scope2 | 2015-08-10 00:00:00 | 2015-08-10 00:00:00 |
| 2 | 123456789 | scope1 | 2015-08-10 00:00:00 | 2015-08-10 00:00:00 |
+—-+————+———-+———————+———————+
мой routes.php,
Route::group(['middleware' => 'oauth:scope2','prefix' => 'api/v1'], function () {
Route::GET('categoriesWithOffers', 'api\v1\CategoriesController@categoriesWithOffers');
});
и мой oauth2.php настройки как ниже
'grant_types' => [
'client_credentials' => [
'class' => '\League\OAuth2\Server\Grant\ClientCredentialsGrant',
'access_token_ttl' => 3600
],
],
'token_type' => 'League\OAuth2\Server\TokenType\Bearer',
'state_param' => false,
'scope_param' => false,
'scope_delimiter' => ',',
'default_scope' => null,
'limit_clients_to_grants' => false,
'limit_clients_to_scopes' => false,
'limit_scopes_to_grants' => false,
'http_headers_only' => false,
Я просил следующий путь
http://domain.com/api/v1/categoriesWithOffers?access token = Jo7lAqE2uD3KbyLQWlrmukzyHJOQBHZ1QFsuBKUtscope = scope1
и это дает мне эту ошибку
{
«ошибка»: «неверный_обзор»,
«error_description»: «Запрошенная область недопустима, неизвестна или имеет неправильный формат. Проверьте область действия \» scope2 \ «.}}
Когда я добавил токен запроса и область видимости в
oauth_access_token_scopes Таблица работает нормально. Но мне нужно определить области, как уже упоминалось при обсуждении этого вопроса.
Любая помощь будет принята с благодарностью!
Область используется при отправке запросов на получение токена доступа.
/token?grant_type=client_credentials&client_id=234567890&client_secret=123456789&scope=scope1
С этим URL вы получите токен доступа, который затем сможете использовать в своих URL.
Других решений пока нет …