9

Laracastに記載されている正確な手順に従いました: What's New in Laravel 5.3: Laravel Passport to implement api authenticationusing oauth2.

web.phpclient/consumer プロジェクトの私のファイルは次のようになります。

use Illuminate\Http\Request;


Route::get('/', function () {
$query = http_build_query([
     'client_id' => 2,
     'redirect_uri' => 'http://offline.xyz.com/callback',
     'response_type' => 'code',
     'scope' => '',
    ]);

return redirect ('http://api.xyz.com/oauth/authorize?'.$query);
});

Route::get('/callback', function (Request $request){
$http= new GuzzleHttp\Client;

$response = $http->post('http://api.xyz.com/oauth/token',[
    'form_params' => [
            'grant_type' => 'authorization_code',
            'client_id' => 2 , 
            'client_secret' => 'tUGYrNeWCGAQt220n88CGoXVu7TRDyZ20fxAlFcL' ,
            'redirect_uri' => 'http://offline.xyz.com/callback',
            'code' => $request->code,
        ],
    ]);

return json_decode((string) $response->getBody(), true);
});

authorizeクライアントが API にアクセスできるようにする必要があるアクセス許可要求ページを取得しています。しかし、承認をクリックすると、次のメッセージが表示されるページにリダイレクトされます。

{"error":"invalid_client","message":"Client authentication failed"}

これを解決するには?

laravel/passportオフライン プロジェクトにはインストールしませんでした。私は何かを逃していますか?ビデオチュートリアルで言及されていることを正確に実行し、実装しました。私が気付いていない他の何かを含める必要がありますか?(私は oauth2 に関する非常に基本的な知識を持っています)。

それが役立つ場合は、インターネット接続があるときにオンライン システムに定期的にデータを送信するオフライン システムを実装しようとしています。そのため、保存する情報を含むリクエストを作成しapiて送信できると考えました。post

4

2 に答える 2

2

Laravel プロジェクトを再インストールするか、パスポートを再インストールしますか? 「.env」ファイル、「oauth_clients」データベーステーブル、およびコードのすべての場所で、client_idとが同じであることを確認します。client_secret

   'client_id' => ....,
   'client-secret' => ......

異なる場合は、「oauth_clients」データベース テーブルから適切なパラメータ (client_id、client_secret) のコードにコピー アンド ペーストしますclient_idclient_secret

于 2017-05-30T14:42:17.840 に答える