# 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>
