Requesting Tokens
การร้องขอโทเค้น คือการเปลี่ยนเส้นทางสำหรับการอนุญาตให้ใช้แอพพลิเคชันต้นทาง นักพัฒนาใช้รหัสของแอพพลิเคชัน (Client ID)
ที่ได้จากการขอรหัสอนุญาต (authorization code)และโทเค็นการเข้าถึง (access token) จากแอปพลิเคชันของคุณครั้งแรก
แอปพลิเคชันที่ใช้งานทำการเปลี่ยนเส้นทางไปยังเส้นทาง /oauth/authorize ดังนี้:
Converting Authorization Codes To Access Tokens
การแปลงรหัสการอนุญาตเพื่อเข้าถึงโทเค็น
หากผู้ใช้อนุมัติคำขอการอนุญาตพวกเขาจะถูกเปลี่ยนเส้นทางกลับไปยังแอปพลิเคชั่นที่ใช้งาน
ควรตรวจสอบพารามิเตอร์สถานะกับค่าที่เก็บไว้ก่อนการเปลี่ยนเส้นทาง
หากพารามิเตอร์สถานะตรงกับแอพพลิเคชันต้นทางควรออกคำขอ POST เพื่อขอโทเค็นการเข้าถึง
คำขอควรมีรหัสการอนุญาตที่ออกโดยแอปพลิเคชันของคุณเมื่อผู้ใช้อนุมัติ
Retrieving Tokens
การเรียกโทเค็น เป็นการอนุญาตให้ใช้ข้อมูลของแอพพลิชันที่ได้รับการตรวจสอบความถูกต้องแล้ว
ก่อนที่แอปพลิเคชันต้นทางสามารถออกโทเค็นผ่านการอนุญาตของสมาชิก จะะต้องสร้างข้อมูลรับรอง
ในการดึงโทเค็นโดยใช้ประเภท Bearer ทำการร้องขอไปยังปลายทาง oauth/token
Passing The Access Token
การใช้งานผ่านโทเค็นการเข้าถึง (Access Token)
เมื่อเรียกเส้นทางที่ได้อนุญาตให้เข้าถึง โดย Passport ผู้ใช้ API ของแอปพลิเคชันควรระบุโทเค็นการเข้าถึง
ในส่วนหัวการอนุญาตของเส้นทางการเข้าถึง ดังตัวอย่างเมื่อใช้ไลบรารี Guzzle HTTP:
Requesting Tokens
Route::get('/redirect', function (Request $request) {
$request->session()->put('state', $state = Str::random(40));
$query = http_build_query([
'client_id' => 'client-id',
'redirect_uri' => 'http://example.com/callback',
'response_type' => 'code',
'scope' => '',
'state' => $state,
]);
return redirect('http://your-app.com/oauth/authorize?'.$query);
});
Converting Authorization Codes To Access Tokens
Route::get('/callback', function (Request $request) {
$state = $request->session()->pull('state');
throw_unless(
strlen($state) > 0 && $state === $request->state,
InvalidArgumentException::class
);
$http = new GuzzleHttp\Client;
$response = $http->post('http://your-app.com/oauth/token', [
'form_params' => [
'grant_type' => 'authorization_code',
'client_id' => 'client-id',
'client_secret' => 'client-secret',
'redirect_uri' => 'http://example.com/callback',
'code' => $request->code,
],
]);
return json_decode((string) $response->getBody(), true);
});
Retrieving Tokens
$guzzle = new GuzzleHttp\Client;
$response = $guzzle->post('http://your-app.com/oauth/token', [
'form_params' => [
'grant_type' => 'client_credentials',
'client_id' => 'client-id',
'client_secret' => 'client-secret',
'scope' => 'your-scope',
],
]);
return json_decode((string) $response->getBody(), true)['access_token'];
Passing The Access Token
$response = $client->request('GET', '/api/user', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.$accessToken,
],
]);