ข้ามไปยังเนื้อหาหลัก

โต้ตอบกับ Management API

Logto Management API คืออะไร?​

Logto Management API คือชุด API ที่ครอบคลุมซึ่งให้คุณควบคุมการใช้งานได้อย่างเต็มที่ตามความต้องการของผลิตภัณฑ์และเทคโนโลยีของคุณ โดยถูกสร้างไว้ล่วงหน้า แสดงอยู่ใน Console > API resources > Logto Management API และไม่สามารถลบหรือแก้ไขได้

ตัวระบุของมันจะอยู่ในรูปแบบ https://[tenant-id].logto.app/api

บันทึก:

ตัวระบุ Logto Management API จะแตกต่างกันระหว่าง Logto Cloud และ Logto Open Source:

  • Logto Cloud: https://[tenant-id].logto.app/api
  • Logto OSS: https://default.logto.app/api

ในตัวอย่างต่อไปนี้ เราจะใช้ตัวระบุของเวอร์ชัน Cloud

Logto Management API Resource Logto Management API Details

ด้วย Logto Management API คุณสามารถเข้าถึงบริการ backend ที่แข็งแกร่งของ Logto ซึ่งสามารถขยายได้สูงและนำไปใช้ได้ในหลายสถานการณ์ มันให้ความสามารถที่เหนือกว่าความสามารถ low-code ของ Admin Console

API ที่ใช้บ่อยบางส่วนมีดังนี้:

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ API ที่มีอยู่ โปรดเยี่ยมชม https://openapi.logto.io/

วิธีเข้าถึง Logto Management API​

สร้างแอป M2M​

บันทึก:

หากคุณยังไม่คุ้นเคยกับ flow การยืนยันตัวตนแบบ M2M (Machine-to-Machine) ขอแนะนำให้อ่าน ทำความเข้าใจ flow การยืนยันตัวตน ก่อนเพื่อเข้าใจแนวคิดพื้นฐาน

ไปที่ Console > Applications เลือกประเภทแอปพลิเคชัน "Machine-to-machine" และเริ่มกระบวนการสร้าง

ระหว่างกระบวนการสร้างแอป M2M คุณจะถูกนำไปยังหน้าที่คุณสามารถกำหนด บทบาท M2M ให้กับแอปพลิเคชันของคุณได้:

Assign M2M roles modal

หรือคุณยังสามารถกำหนดบทบาทเหล่านี้ได้ที่หน้ารายละเอียดแอป M2M เมื่อคุณได้สร้างแอป M2M ไว้แล้ว:

Assign M2M roles page

ในโมดูลกำหนดบทบาท คุณจะเห็นว่ามีบทบาท M2M ทั้งหมด และบทบาทที่มีไอคอน Logto หมายถึงบทบาทเหล่านั้นมีสิทธิ์ Logto Management API อยู่ด้วย

ตอนนี้ให้กำหนดบทบาท M2M ที่มีสิทธิ์ Logto Management API ให้กับแอป M2M ของคุณ

ดึงโทเค็นการเข้าถึง​

พื้นฐานเกี่ยวกับคำขอโทเค็นการเข้าถึง​

แอป M2M จะส่งคำขอ POST ไปยัง token endpoint เพื่อดึงโทเค็นการเข้าถึง (Access token) โดยเพิ่มพารามิเตอร์ต่อไปนี้ในรูปแบบ application/x-www-form-urlencoded ใน entity-body ของ HTTP request:

  • grant_type: ต้องตั้งค่าเป็น client_credentials
  • resource: ทรัพยากรที่คุณต้องการเข้าถึง
  • scope: ขอบเขต (Scope) ของคำขอการเข้าถึง

และคุณยังต้องแนบข้อมูลรับรองของแอป M2M ของคุณใน request header เพื่อให้ token endpoint ทำการยืนยันตัวตน (Authentication) ของแอป M2M ของคุณ

วิธีนี้ทำได้โดยการแนบข้อมูลรับรองของแอปในรูปแบบ Basic authentication ใน request Authorization header: ให้ base64-encode {App ID}:{App Secret} และตั้งค่าเป็นค่าหลัง prefix Basic

คุณสามารถดู App ID และ App Secret ได้จากหน้ารายละเอียดของแอป M2M ของคุณ:

App ID and App Secret

ดึงโทเค็นการเข้าถึงสำหรับ Logto Management API​

Logto มี “Logto Management API” เป็นทรัพยากรในตัว ซึ่งเป็นทรัพยากรแบบอ่านอย่างเดียว (readonly) พร้อมสิทธิ์ all สำหรับเข้าถึง Logto Management API คุณสามารถดูได้จากรายการทรัพยากร API ของคุณ ตัวบ่งชี้ API ของทรัพยากรนี้จะอยู่ในรูปแบบ https://{your-tenant-id}.logto.app/api และนี่จะเป็นค่าทรัพยากรที่ใช้ใน request body ของการขอโทเค็นการเข้าถึง (access token)

รายละเอียด Logto Management API

ก่อนเข้าถึง Logto Management API ให้แน่ใจว่าแอป M2M ของคุณได้รับมอบหมายบทบาท M2M ที่มีสิทธิ์ all จากทรัพยากร “Logto Management API” ที่มีมาให้ในตัวนี้แล้ว

ข้อมูล:

Logto ยังมีบทบาท M2M ที่ตั้งค่าล่วงหน้าไว้ชื่อ “Logto Management API access” สำหรับ tenant ที่สร้างใหม่ ซึ่งได้มอบหมายสิทธิ์ all ของ Logto Management API resource ไว้แล้ว คุณสามารถใช้งานได้ทันทีโดยไม่ต้องตั้งค่าสิทธิ์เอง บทบาทที่ตั้งค่านี้สามารถแก้ไขหรือลบได้ตามต้องการ

ตอนนี้ รวบรวมทุกอย่างที่เรามีและส่งคำขอ:

ข้อมูล:

ตั้งแต่เวอร์ชัน v1.30.1 เป็นต้นไป Logto มี SDK Node.js อย่างเป็นทางการ @logto/api เพื่อช่วยให้คุณโต้ตอบกับ Logto Management API ได้ง่ายขึ้น

Logto Cloud​

import { createManagementApi } from '@logto/api/management';

const { apiClient, clientCredentials } = createManagementApi('your-tenant-id', {
clientId: 'your-client-id',
clientSecret: 'your-client-secret',
});

const { value } = await clientCredentials.getAccessToken();
console.log('Access token:', value);

// หรือคุณสามารถข้ามขั้นตอนการขอโทเค็นการเข้าถึงและเรียก API ได้โดยตรง
const response = await apiClient.GET('/api/users');
console.log(response.data);

Self-hosted / OSS​

ผู้ใช้ OSS ควรใช้ default เป็น tenant ID และต้องกำหนดค่า baseUrl และ apiIndicator ด้วย

const { apiClient, clientCredentials } = createManagementApi('default', {
clientId: 'your-client-id',
clientSecret: 'your-client-secret',
baseUrl: 'https://your.logto.endpoint',
apiIndicator: 'https://default.logto.app/api',
});

เข้าถึง Logto Management API ด้วยโทเค็นการเข้าถึง​

ด้วย @logto/api SDK คุณสามารถโต้ตอบกับ Management API ใด ๆ ได้โดยตรงโดยใช้โค้ดตัวอย่างด้านล่าง โทเค็นการเข้าถึง (Access token) จะถูกแคชภายในและรีเฟรชโดยอัตโนติหากจำเป็น

import { createManagementApi } from '@logto/api/management';

const { apiClient } = createManagementApi('your-tenant-id', {
clientId: 'your-client-id',
clientSecret: 'your-client-secret',
});

const response = await apiClient.GET('/api/applications');
console.log(response.data);

กรณีการใช้งานทั่วไปของ Logto Management API​

นักพัฒนาของเราได้สร้างฟีเจอร์เพิ่มเติมมากมายโดยใช้ Logto Management API เราเชื่อว่า API ของเราสามารถขยายได้สูงและรองรับความต้องการที่หลากหลายของคุณ ตัวอย่างต่อไปนี้คือกรณีที่ไม่สามารถทำได้ผ่าน Logto Admin Console แต่สามารถทำได้ผ่าน Logto Management API

สร้างโปรไฟล์ผู้ใช้ด้วยตัวเอง​

ขณะนี้ Logto ยังไม่มี UI สำเร็จรูปสำหรับโปรไฟล์ผู้ใช้ เราตระหนักว่าโปรไฟล์ผู้ใช้เกี่ยวข้องกับธุรกิจและคุณสมบัติของผลิตภัณฑ์อย่างใกล้ชิด ในขณะที่เรากำลังหาวิธีที่ดีที่สุด ขอแนะนำให้ใช้ API ของเราเพื่อสร้างโซลูชันของคุณเอง เช่น คุณสามารถใช้ interaction API, profile API และ verification code API เพื่อพัฒนาโซลูชันที่ตรงกับความต้องการของคุณ

Logto Admin Console รองรับการค้นหาและกรองขั้นพื้นฐาน สำหรับตัวเลือกการค้นหาขั้นสูง เช่น การค้นหาแบบคลุมเครือ (fuzzy search), การจับคู่แบบเป๊ะ, และการแยกแยะตัวพิมพ์เล็ก-ใหญ่ โปรดดู คู่มือการค้นหาผู้ใช้ขั้นสูง

จัดการองค์กรด้วยตัวเอง​

หากคุณใช้ฟีเจอร์ องค์กร (Organizations) เพื่อสร้างแอป multi-tenant คุณอาจต้องใช้ Logto Management API สำหรับงานเช่น การเชิญเข้าร่วมองค์กรและการจัดการสมาชิก สำหรับ SaaS ของคุณที่มีทั้งผู้ดูแลระบบและสมาชิกใน tenant Logto Management API จะช่วยให้คุณสร้างพอร์ทัลผู้ดูแลระบบที่ปรับแต่งได้ตามความต้องการทางธุรกิจของคุณ ดูรายละเอียดเพิ่มเติมได้ที่ ที่นี่

เคล็ดลับการใช้งาน Logto Management API​

การจัดการผลลัพธ์ API แบบแบ่งหน้า (pagination)​

ผลลัพธ์บางส่วนของ API อาจมีจำนวนมาก ระบบจะทำการแบ่งหน้า (pagination) Logto ให้ข้อมูล pagination อยู่ 2 แบบ

header ของผลลัพธ์แบบแบ่งหน้าจะมีลักษณะดังนี้:

Link: <https://logto.dev/users?page=1&page_size=20>; rel="first"

link header จะให้ URL สำหรับหน้าก่อนหน้า ถัดไป แรก และสุดท้ายของผลลัพธ์:

  • URL สำหรับหน้าก่อนหน้าจะตามด้วย rel="prev"
  • URL สำหรับหน้าถัดไปจะตามด้วย rel="next"
  • URL สำหรับหน้าสุดท้ายจะตามด้วย rel="last"
  • URL สำหรับหน้าแรกจะตามด้วย rel="first"

ใช้ total-number header​

นอกจาก link headers มาตรฐานแล้ว Logto จะเพิ่ม header Total-Number ด้วย:

Total-Number: 216

ซึ่งจะสะดวกและมีประโยชน์มากสำหรับการแสดงหมายเลขหน้า

เปลี่ยนหมายเลขหน้าและจำนวนรายการต่อหน้า​

มี query parameter ให้เลือก 2 ตัว:

  • page: ระบุหมายเลขหน้า เริ่มจาก 1 ค่าเริ่มต้นคือ 1
  • page_size: ระบุจำนวนรายการต่อหน้า ค่าเริ่มต้นคือ 20

ขีดจำกัดอัตรา (Rate limit)​

บันทึก:

ใช้เฉพาะกับ Logto Cloud เท่านั้น

Logto Cloud ใช้ขีดจำกัดอัตรา (rate limit) ระดับ tenant เพื่อปกป้องเสถียรภาพของระบบ ดูรายละเอียดได้ที่ system limit rate-limit section

ใช้งาน Logto Management API: คู่มือทีละขั้นตอน

รับโทเค็น M2M ภายในไม่กี่นาทีด้วย Postman