Я использую oauth2-server-laravel для моего API. Я хочу предоставить областям приложения для клиентов, которые используют мой API (Android, Windows, IOS и сеть). Поэтому я реализовал следующий путь.Ошибка Laravel 5.1 oAuth 2 недопустимая область области
мои данные таблицы следующим образом
oauth_clients Таблица
+ ----------- + --------- + ---- ----- + --------------------- + --------------------- +
| ID | секрет | имя | created_at | updated_at |
+ ----------- + --------- + --------- + --------------- ------ + --------------------- +
| 123456789 | secret1 | Интернет | 2015-08-10 00:00:00 | 2015-08-10 00:00:00 |
| 234567890 | secret2 | win_app | 2015-08-10 00:00:00 | 2015-08-10 00:00:00 |
+ ----------- + --------- + --------- + --------------- ------ + --------------------- +
oauth_scopes Таблица
+ ---- ---- + -------------------- + --------------------- + - ------------------- +
| id | описание | created_at | 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 | created_at | 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\[email protected]');
});
и мой 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=Jo7lAqE2uD3KbyLQWlrmukzyHJOQBHZ1QFsuBKUt&scope=scope1
, и это дает мне эту ошибку
{ "ошибка": "invalid_scope", "error_description": Msgstr "Запрошенная область недействительна, неизвестна или неверна. Проверьте область видимости scope2. }
Когда я добавил текущий запрос маркера и область применения в oauth_access_token_scopes таблицы она работает fine.But мне нужно определить областей, как указано в bigining этого вопроса.
Любая помощь была бы принята с благодарностью!
также я пробовал 'limit_clients_to_scopes' => true, а 'default_scope' => 'scope2', – MS48