Я использую в своем проекте аутентификацию Laravel Passport. Я хочу использовать аутентификацию паспорта только в API, поэтому я пытаюсь сгенерировать client_id
и client_secret
, используя приведенный ниже код, но он возвращает NULL
Я написал этот код в своих маршрутах / 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' => '[email protected]',
'name' => 'Ovais2',
'redirect' => url('/') . '/callback'
]
)
]
);
$response_body = json_decode((string)$response->getBody(), true);
var_dump($response_body);
});
Предположим, если я сгенерировал client_id
с помощью командной строки php artisan passport:client
теперь я хочу авторизованный токен доступа, но он возвращает NULL
Route::post('callback', function (Request $request) {
$http = new GuzzleHttp\Client();
$oauth_client = DB::table('oauth_clients')->where('id', '=', '[email protected]')->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);
пришлите мне результат:
Response {#224
-reasonPhrase: "OK"
-statusCode: 200
-headers: array:7 [
"Date" => array:1 [
0 => "Sat, 29 Oct 2016 10:19:24 GMT"
]
"Server" => array:1 [
0 => "Apache/2.4.23 (Win32) OpenSSL/1.0.2h PHP/7.0.9"
]
"X-Powered-By" => array:1 [
0 => "PHP/7.0.9"
]
"Cache-Control" => array:1 [
0 => "no-cache"
]
"Set-Cookie" => array:1 [
0 => "laravel_session=eyJpdiI6Ikx5WXJpTEFvZ0ZiNFwvbFwvYWZRQWxEZz09IiwidmFsdWUiOiJVM29lbTNYSnZwdld5ZHdVRk1IK1hJbG9RenNQa1owS1lRMEFYQ3lVamluV3JcL2RwaVQyRkpsZzkwQ082OU94QkJiSUpGQTZpeTMxWjdpMEtCZ1Byc3c9PSIsIm1hYyI6IjQwNTcwZTQ4YzQ2OGIwODQ5Y2NjMzBiMmIyNmI5MTVkNTY0ZjI0OGQ1Y2M1NTVjYTljNmU4Mjk2Nzg0Yjk2MmMifQ%3D%3D; expires=Sat, 29-Oct-2016 12:19:24 GMT; Max-Age=7200; path=/; HttpOnly"
]
"Content-Length" => array:1 [
0 => "4709"
]
"Content-Type" => array:1 [
0 => "text/html; charset=UTF-8"
]
]
-headerNames: array:7 [
"date" => "Date"
"server" => "Server"
"x-powered-by" => "X-Powered-By"
"cache-control" => "Cache-Control"
"set-cookie" => "Set-Cookie"
"content-length" => "Content-Length"
"content-type" => "Content-Type"
]
-protocol: "1.1"
-stream: Stream {#222
-stream: stream resource @234
wrapper_type: "PHP"
stream_type: "TEMP"
mode: "w+b"
unread_bytes: 0
seekable: true
uri: "php://temp"
options: []
}
-size: null
-seekable: true
-readable: true
-writable: true
-uri: "php://temp"
-customMetadata: []
}
}
Кто-нибудь может мне помочь? Жду положительного ответа.
domain.com/oauth/clients
? Вы пробовалиdd($response);
иdd($response->getBody());
? Если нет, попробуйте их и дайте нам знать, каков результат. - person alex-greaves   schedule 29.10.2016dd(url('/') . '/oauth/clients');
пришлите мне результат:http://localhost/project/public/oauth/clients
- person okconfused   schedule 29.10.2016dd($response);
иdd($response->getBody());
? Если да, пришлите, пожалуйста, результат для них. - person alex-greaves   schedule 29.10.2016dd($response->getBody());
? Необходимо проверить, что access_token действительно является частью массива. Также в вашем вопросе вы упомянули, что он возвращает NULL, это $ response_body, который возвращает NULL или $ response_body ['access_token']? - person alex-greaves   schedule 29.10.2016dd($response->getBody());
и $ response_body, отправивший мне NULL - person okconfused   schedule 29.10.2016