# Authentication (/developer/authentication)

Token 2 ประเภทของ EasyDonate API - API key ส่วนตัวและ OAuth access token

ทุก request ยืนยันตัวตนด้วย header เดียวกัน:

```
Authorization: Bearer <token>
```

## ประเภทของ token [#ประเภทของ-token]

| Token | ประเภท | ทำงานในนาม | ได้มาจาก |
| --- | --- | --- | --- |
| `Bearer ezdn_v1_<cuid>` | API key ส่วนตัว | บัญชีของคุณเอง | <NavPath href="https://easydonate.app/dashboard/developer?tab=apiKeys" items={['หน้าจัดการ', 'โซนผู้พัฒนา', 'API Keys']} /> |
| `Bearer <jwt>` | OAuth access token | ผู้ใช้ที่กดยินยอม | [ขั้นตอน OAuth](/developer/oauth) |

API key เป็น opaque string ขึ้นต้นด้วย `ezdn_v1_` ส่วน OAuth access token เป็น JWT ที่มีอายุสั้น หน้าตาจะเป็น `xxxxx.yyyyy.zzzzz` ไม่ใช่ string ที่มี prefix

ลองยิงด้วย token ของคุณ:

<Playground path="/api/v1/me" method="get" />

## เลือกแบบไหนดี [#เลือกแบบไหนดี]

- ทำสคริปต์หรือเครื่องมือใช้กับบัญชีตัวเอง -> API key ส่วนตัว
- ทำแอปหรือแพลตฟอร์มให้ผู้ใช้ EasyDonate คนอื่น -> [OAuth](/developer/oauth)

## Scope และ 403 [#scope-และ-403]

Token ทุกตัวถูกจำกัดด้วย scope - หาก token ไม่มี scope ที่ endpoint นั้นต้องการ request จะถูกปฏิเสธด้วย `403` ดูรายการ scope ทั้งหมดได้ที่หน้า [Scopes](/developer/scopes)

<Callout type="warn">
  เก็บ token ไว้ฝั่ง server เท่านั้น - อย่าฝัง API key หรือ `client_secret`
  ในโค้ดฝั่ง browser หรือแอปที่แจกให้ผู้ใช้
</Callout>
