2017-05-22 8 views
1

私はクライアントであるOAuth2の状況でホストから自分のサイトに送信されている認証コードを取得する必要があります。ホストが認証コードを送り返すと、URLからコードを取り除き、それを送ってトークンと秘密を取得する適切な方法は何ですか?LaravelのOAuth2のトークンを取得

私はhtaccessのコードを取り除き、以下のコードを使用して環境変数として保存しようとしましたが、環境変数を適切に格納していません。

htaccessの

RewriteCond %{QUERY_STRING} ^code=(.*)$ 
RewriteRule^- [E=MY_AUTH:%1] 
RewriteCond %{QUERY_STRING} ^code=(.*)$ 
RewriteRule ^(.*) https://www.example.com/cadWithAuth? [L] 

ルータ

Route::get('/cadWithAuth', '[email protected]')->name('files.cadWithAuth'); 

コントローラ

public function cadWithAuth() 
{ 
    $authCode = getenv('MY_AUTH'); 
    $authID = getenv('OAUTH_CLIENT_ID'); 
    $authSecret = getenv('OAUTH_CLIENT_SECRET'); 
    $client = new Client(); //GuzzleHttp\Client 
    $result = $client->post('https://oauth.hostsite.com/oauth/token', [ 
     'form_params' => [ 
      'grant_type' => 'authorization_code', 
      'code' => $authCode, 
      'client id' => $authID, 
      'client_secret' => $authSecret 
     ] 
    ]); 

    return response()->json($result); 
} 

答えて

0

私は、既存のライブラリを見てお勧めしますあなたがに適切な方法を考えて、他のどのような開発者を知りたい場合は、それがあります物事を実装することです。に環境変数を設定するよう

トークン/コードをキャプチャする、私はそれがオリジナルだと思う。私はちょうど(それは私の意見だと思う)それは機能を一緒にグループ化し、可能な限り魔法を削除する方が簡単で論理的だと思う。

私は環境変数を使用しません。なぜなら、1か月程度で、私はその変数をどこに設定するのか簡単には思い出せないからです。アプリケーション内のすべての環境変数にアクセスできます。

この同じ議論は私が提供する解決策にも当てはまります。これはあなたのコードを取り出すために魔法の$ _GET ["code"]を使うことです。

TLDR;あなたがする必要がなければ車輪を再発明しないでください、Oauth2のクライアントが利用できるので、それらを使用してください。 (大部分は文書化されていて、独自のテストが付属していますので、それらを書く必要はありません)

+0

私はグズルを見ました。しかし、私はドキュメントや説明が受け入れられないと感じています - 私はphpとlaravelにとっては普通だと感じるものです。私がそれをうまく動作させることができれば、それは私にとってはブラックボックスとして機能し、本当に何が起こっているのか本当に分かりません。 –

+0

私はあなたに良い例を挙げます。 guzzle readMeには、ユーザ名とパスワードを要求するconfig変数があります。通常、OAuth2では、ユーザーはホストのログインにルーティングされ、クライアントはその名前とパスワードを認識しません。それで、なぜここにいるのですか? 権限コードと、ユーザーにホストへのログイン、認可コードの取得、トークンの取得、その他の処理のプロセスについての説明もありません。 readMeは、ユーザーがトークンだけを必要とするかのように開始します。 –

+0

Readmeの後半に、これらのオブジェクトを使用してトークンを取得して保存できることを説明します – Dymen1

関連する問題