OAuth 2.1
Hayaan ang ibang app na i-sign in ang mga user nila gamit ang Bot-Hosting account, tulad ng Sign in with Discord. Binuo sa OAuth 2.1 at PKCE, kaya gumagana ang kahit anong standard na OAuth client.
Gumamit ng API key para kontrolin ang sarili mong account. Gumamit ng OAuth kapag gumagawa ka ng app na kumikilos sa account ng ibang tao, para mag-log in sila at magbigay ng pahintulot sa halip na mag-paste ng key. Sa eksaktong flow na ito kumokonekta ang mga AI assistant tulad ng ChatGPT.
Ang flow
- 01 Gumawa ng app Magrehistro ng pangalan at redirect URI sa developer settings mo. Makakakuha ka ng public na client_id, walang secret.
- 02 Ipadala ang mga user para mag-authorize Mag-redirect sa /oauth/authorize gamit ang PKCE. Magla-log in ang user at aaprubahan ang mga scope.
- 03 Ipalit ang code Babalik sila na may code. I-POST ito sa token endpoint para makakuha ng access token.
- 04 Tawagin ang API sa ngalan nila Ipadala ang token bilang Bearer sa /api/v1, at i-refresh ito sa background.
Mga Endpoint
| Mga Endpoint | Layunin |
|---|---|
| GET /oauth/authorize | Screen ng pahintulot ng user, binubuksan sa browser. |
| POST /api/oauth/token | Palitan ang code ng token, o mag-refresh ng isa. |
| POST /api/oauth/register | Dynamic Client Registration (RFC 7591), opsyonal. |
| GET /.well-known/oauth-authorization-server | Discovery metadata. |
| GET /.well-known/oauth-protected-resource | Resource metadata, ginagamit ng mga MCP client. |
Tagal ng mga token
Authorization code 10 min Isang beses lang magagamit, nakatali sa PKCE.
Access token 7 araw Bearer para sa mga /api/v1 call.
Refresh token 30 araw Pinapalitan sa bawat paggamit.
Refresh
Bawat refresh ay nagbabalik ng bagong refresh token at binabawi ang luma: laging i-overwrite ang naka-store. Kung nagbalik ng invalid_grant ang refresh, ibalik ang user sa step 1.
Seguridad
- I-store ang mga token sa server-side, nakatali sa user mo. Huwag kailanman ipadala sa browser o sa public na repository.
- Binabawi ang mga token sa sandaling idiskonekta ng user ang app mo.
- Gumamit ng https na redirect URI sa production. Tinatanggap ang http para sa lokal na pagsubok.
- Hindi kailanman nagbibigay ng admin ang mga OAuth token, anuman ang mga scope na naaprubahan.