在API中使用Laravel passport身份验证

时间:2016-10-29 09:50:17

标签: php laravel oauth laravel-5.3 laravel-passport

我在项目中使用Laravel Passport身份验证。我想仅在API中使用护照身份验证,因此我尝试使用以下代码生成client_idclient_secret,但它会返回NULL

我已经在我的routes / api.php

中编写了这段代码
Route::post('/gen_client', function () {
    $http = new GuzzleHttp\Client([
        'headers' => [ 'Content-Type' => 'application/json' ]
    ]);

    $response = $http->post(url('/') . '/oauth/clients',
    ['body' => json_encode(
        [
            'id' => 'ovais.khan@gmail.com', 
            'name' => 'Ovais2',
            'redirect' => url('/') . '/callback'
        ]
        )
    ]
);

    $response_body = json_decode((string)$response->getBody(), true); 
    var_dump($response_body);
});

假设我使用命令行生成client_id <{1}}

现在我想授权访问令牌,但它返回NULL

php artisan passport:client

Route::post('callback', function (Request $request) { $http = new GuzzleHttp\Client(); $oauth_client = DB::table('oauth_clients')->where('id', '=', 'ovais.khan@gmail.com')->first(); $response = $http->post(url('/') . '/oauth/token', [ 'form_params' => [ 'grant_type' => 'authorization_code', 'client_id' => $oauth_client->id, 'client_secret' => $oauth_client->secret, 'redirect_uri' => url('/') . '/callback', 'code' => $request->code, ], ]); $response_body = json_decode((string)$response->getBody(), true); var_dump($response_body); $access_token = $response_body['access_token'] ; $refresh_token = $response_body['refresh_token']; }); 向我发送输出信息:

dd(url('/') . '/oauth/clients');

http://localhost/project/public/oauth/clients 向我发送输出信息:

dd($response);

任何人都可以帮助我吗? 等待积极的回应。

2 个答案:

答案 0 :(得分:0)

我的团队负责人已经解决了这个问题。请查看以下链接:

Laravel's 5.3 passport and api routes

答案 1 :(得分:-1)

你为$ response_body获取NULL的原因是当你设置变量时你输入了$ response-&gt; getBody()作为字符串,你实际得到的是Stream的一个实例。你也试图json_decode一个类,而不是json字符串。 $response_body = json_decode((string)$response->getBody(), true);如果您想要JSON回复,可以执行$response_body = $response->json();

有关更多信息,GuzzleHttp文档的这些部分将非常有用: http://guzzle3.readthedocs.io/http-client/response.html#response-bodyhttp://guzzle3.readthedocs.io/http-client/entity-bodies.html