2017-01-19 9 views
2

Я пытаюсь создать сервер oauth2 на паспорте Laravel и протестировать его из стороннего приложения. Сервер Oauth использует Laravel, а клиент использует инфраструктуру Yii. Я не могу изменить конец клиента переднего и я создал маршрут/API/OAuth/логин, который направляет запрос на OAuth-сервер:Laravel Passport oauth/authorize возвращает basic auth

public function actionOauthLogin() 
{ 
    $query = http_build_query([ 
     'client_id' => '12', 
     'client_secret' => '', 
     'redirect_uri' => 'http://client.loc/api/oauth/callback', 
     'response_type' => 'code', 
     'scope' => '', 
    ]); 
    return $this->redirect('http://oauth-server.loc/oauth/authorize?' . $query); 
} 

Этой обработка метода/API/OAuth/обратный вызов маршрут:

public function actionOauthCallback() 
{ 
    $http = new Client(); 
    $response = $http->post('http://oauth-server.loc/oauth/token', [ 
     'form_params' => [ 
      'grant_type' => 'authorization_code', 
      'client_id' => '3', 
      'client_secret' => 'TJDyfygkuga45rtyfj8&65567Yhhgjjjj', 
      'redirect_uri' => 'http://client.loc/api/oauth/callback', 
      'code' => Yii::app()->request->getParamFromRequest('code'), 
     ], 
    ]); 
    return json_decode((string) $response->getBody(), true); 
} 

Все реализовано как в документации. Но когда я открываю/api/oauth/login, перенаправление перенаправления на oauth-server.loc/oauth/authorize? {Params}, и я вижу основное базовое окно HTTP. WTF? Nginx не имеет таких настроек. Кто-то знает, что я делаю неправильно? Помоги мне, пожалуйста.

+0

Вчера я установил клиента fpleague oauth2 на Yii (http://oauth2-client.thephpleague.com/providers/implementing/). Но результат тот же. – epod

+0

Я получаю точно такую ​​же проблему. Вы выяснили решение? @epod – kirgy

ответ

0

У меня была такая же проблема, в моем случае возвращаемые параметры сказали мне, что мой анализируемый объем недействителен; некоторые API-интерфейсы OAuth2 требуют областей, где может возникнуть эта проблема.

Решение состоит в том, чтобы добавить массив областей, разрешенных вашим приложением, в метод загрузки AuthServiceProvider.

// ../app/Providers/AuthServiceProvider.php 
// ... 
    public function boot() 
    { 

     $this->registerPolicies(); 
     Passport::tokensCan([ 
      'manage-devices' => 'Manage devices', 
      'place-orders' => 'Place orders', 
      'check-status' => 'Check order status', 
     ]); 

//.. 
0

Убедитесь, что 'redirect_uri' => 'http://client.loc/api/oauth/callback' такое же, как в качестве URL переадресации, который сохраняется в oauth_clients таблице с совпадающим client_id

0

Вы должны установить значение 0 для столбцов «personal_access_client», «password_client» в «oauth_clients «таблица для нашего клиента и установите redirect_uri так же, как и в запросе.