2015-08-11 4 views
3

Я использую 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 этого вопроса.

Любая помощь была бы принята с благодарностью!

+0

также я пробовал 'limit_clients_to_scopes' => true, а 'default_scope' => 'scope2', – MS48

ответ

1

Область используется при выполнении запросов, чтобы получить маркер доступа

/token?grant_type=client_credentials&client_id=234567890&client_secret=123456789&scope=scope1 

С помощью этого URL, то вы получите маркер доступа, который затем можно использовать на ваших URL.

+0

Работало. Ты спас свой день. Спасибо :) – MS48

+0

Ваш прием рад помочь –

Смежные вопросы