2016-08-22 4 views
1

У меня есть приложение Laravel 4.2, которое я успешно выполнил с помощью oauth2-server-php. Однако, похоже, я не могу получить гранты User Credential.Не удалось получить тип гранта пользователя.

Вот установка мой код на сервер OAuth:

App::singleton(
    'oauth2', 
    function() { 

     $host = Config::get('database.connections.mongodb.host'); 
     $hosts = is_array($host) ? $host : [$host]; 
     $dbName = Config::get('database.connections.mongodb.database'); 
     $dbOptions = 
      empty(Config::get('database.connections.mongodb.options')) ? [] : Config::get(
       'database.connections.mongodb.options' 
      ); 

     $mongo = new MongoClient('mongodb://' . implode(',', $hosts) . '/' . $dbName, $dbOptions); 
     $storage = new OAuth2\Storage\Mongo($mongo->{$dbName}); 
     $server = new OAuth2\Server(
      $storage, [ 
      'always_issue_new_refresh_token' => true, 
      'refresh_token_lifetime'   => 2419200, 
     ] 
     ); 

     $userStorage = new \Medusa\Oauth\Storage\MedusaUserCredentials(); 

     $server->addStorage($userStorage, 'users'); 

     $userCredentialGrant = new Oauth2\GrantType\UserCredentials($userStorage); 

     $server->addGrantType(new OAuth2\GrantType\AuthorizationCode($storage)); 
     $server->addGrantType(new OAuth2\GrantType\ClientCredentials($storage)); 
     $server->addGrantType($userCredentialGrant); 
     $server->addGrantType(new OAuth2\GrantType\RefreshToken($storage)); 

     return $server; 
    } 
); 

MedusaUserCredentials имеет следующий код:

namespace Medusa\Oauth\Storage; 

use OAuth2\Storage\UserCredentialsInterface; 

class MedusaUserCredentials implements UserCredentialsInterface 
{ 

    public function checkUserCredentials($username, $password) 
    { 
     return Auth::attempt(['email_address' => strtolower($username), 'password' => $password, 'active' => 1]); 
    } 

    public function getUserDetails($username) 
    { 
     return ['user_id' => $username]; 
    } 
} 

Когда я отправляю на веб-сервер для маркера маршрута с использованием сырой полезной нагрузки

grant_type=password&username=<USERNAME>&password=<PASSWORD> 

Я просто получил страницу входа. Маркер-маркер выглядит так:

Route::post(
    'oauth/token', 
    function() { 
     $bridgedRequest = OAuth2\HttpFoundationBridge\Request::createFromRequest(Request::instance()); 
     $bridgedResponse = new OAuth2\HttpFoundationBridge\Response(); 

     $bridgedResponse = App::make('oauth2')->handleTokenRequest($bridgedRequest, $bridgedResponse); 
print_r($bridgedResponse); die(); 
     return $bridgedResponse; 
    } 
); 

Что мне не хватает?

Спасибо!

ответ

0

Я нашел проблему - у меня была проблема с пространством имен, которую я должен был решить. По какой-то причине мое приложение вернуло ответ 200 OK и обычную страницу входа, поэтому я не думал проверять журналы.

Я знаю, плохой разработчик, не печенье!