2016-08-22 11 views
1

oauth2-server-phpを使用して認可コードを実装したLaravel 4.2アプリケーションがあります。しかし、私はUser Credentialが働くようには思えません。ユーザー資格情報の認可タイプを取得できません

は、ここでのOAuthサーバーをセットアップする私のコードです:私は

の生のペイロードを使用してトークンルートにウェブサーバーに投稿すると

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]; 
    } 
} 

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次のコードを持っています

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応答と通常のログインページを返したので、ログをチェックするとは思わなかった。

私は知っている、悪いdev、ないクッキー!

関連する問題