2017-01-19 6 views
2

私はLaravel Passportでoauth2サーバーを作成し、サードパーティアプリケーションからテストしようとしています。 OauthサーバーはLaravelを使用し、クライアントはYiiフレームワークを使用します。私は、クライアントのフロントエンドを変更することができませんし、私はOAuthのサーバに要求を転送したルート/ API/OAuthの/ログインを作成:Laravel Passport oauth/authorizeは基本認証を返します

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

昨日私はyii(http://oauth2-client.thephpleague.com/providers/implementing/)にphpleague oauth2クライアントをインストールしました。しかし結果は同じです。 – epod

+0

私はまったく同じ問題を抱えています。あなたは解決策を見つけましたか? @epod – kirgy

答えて

0

私は同じ問題を抱えていましたが、私の場合、返されたパラメータは私の解析されたスコープが無効であると私に話しました。一部のOAuth2 APIでは、この問題が存在する可能性のあるスコープが必要です。

解決方法は、アプリケーションによって許可されたスコープの配列を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'あなたはoauth_clients」のコラム「personal_access_client」、「password_client」に0を設定する必要が一致client_id

0

oauth_clientsテーブルに保存されたリダイレクトURLと同じであることを確認してください"テーブルを作成し、要求と同じredirect_uriを設定します。