---
title: "OAuth மூலம் இணைக்கவும்"
description: "API விசையைப் பகிராமல் MCP கிளையன்ட்களையும் ThunderPhone CLI-யையும் அங்கீகரிக்கவும்."
---

OAuth, நீங்கள் ஒப்புதல் அளிக்கும் அனுமதிகளுடன் ஒரு செயலியை ஒரு ThunderPhone நிறுவனத்துடன் இணைக்க அனுமதிக்கிறது. டைரக்டரி கிளையன்ட்கள் இயல்பாக OAuth-ஐப் பயன்படுத்த வேண்டும். கைமுறையாக உள்ளமைக்கப்பட்ட Bearer டோக்கன் தேவைப்படும் கிளையன்ட்களுக்கு நிறுவன API விசைகள் தொடர்ந்து கிடைக்கும்.

## இணைப்பை ஒப்புதல் அளிக்கவும்

உங்கள் MCP கிளையன்டில் இணைப்பைத் தொடங்குங்கள். ThunderPhone-இல் உள்நுழைந்து, செயலியின் பெயர் மற்றும் கோரப்பட்ட அனுமதிகளைச் சரிபார்த்து, ஒரு நிறுவனத்தைத் தேர்ந்தெடுத்து, **ஒப்புதல் அளி** என்பதைத் தேர்ந்தெடுக்கவும். நீங்கள் இணைப்பைத் தொடங்கவில்லை என்றாலோ அல்லது செயலியை நம்பவில்லை என்றாலோ **நிராகரி** என்பதைத் தேர்ந்தெடுக்கவும். செயலிப் பெயர்கள் அவற்றின் டெவலப்பர்களால் வழங்கப்படுகின்றன; அவை சரிபார்ப்பு அடையாளம் அல்ல.

`calls:read` கோரப்படும்போது பதிவுகள் மற்றும் உரைநகல்கள் உட்பட, பெயரிடப்பட்ட தரவை வாசிப்பு அனுமதிகள் வெளிப்படுத்தும். எழுதும் அனுமதிகள் வளங்களை மாற்றவோ நீக்கவோ முடியும்; அழைப்புகள், பிரச்சாரங்கள், தொலைபேசி கொள்முதல்கள் மற்றும் டிப்ளாய்மென்ட்கள் செலவுகளை ஏற்படுத்தலாம் அல்லது உற்பத்திச் சூழலைப் பாதிக்கலாம். உங்கள் நிறுவனப் பங்கு தொடர்ந்து பொருந்தும்.

CLI இணைப்புக்கு, உங்கள் டெர்மினலில் காட்டப்படும் சரிபார்ப்பு இணைப்பைத் திறந்து, எட்டு-எழுத்துக் குறியீட்டை ஒப்பிட்டு, உங்கள் நிறுவனத்தைத் தேர்ந்தெடுத்து ஒப்புதல் அளிக்கவும். இணைப்பைத் திறப்பது மட்டும் அணுகலை வழங்காது. குறியீடுகள் 15 நிமிடங்களுக்குப் பிறகு காலாவதியாகும்.

## செயலியின் இணைப்பை நீக்கவும்

டாஷ்போர்டில் **நிறுவனம் → API விசைகள் → அங்கீகரிக்கப்பட்ட செயலிகள்** என்பதைத் திறந்து, **திரும்பப்பெறு** என்பதைத் தேர்ந்தெடுக்கவும். இது தற்போதைய நிறுவனத்திற்கான நீங்கள் தேர்ந்தெடுத்த அங்கீகாரத்தை, அதன் அணுகல் மற்றும் புதுப்பிப்பு டோக்கன்கள் உட்பட, திரும்பப்பெறும். அதை மீண்டும் அங்கீகரிக்க விரும்பினால் செயலியிலிருந்து மீண்டும் இணைக்கவும்.

## MCP கிளையன்ட்களுக்கான கண்டறிதல்

சர்வர் URL-ஆக `https://api.thunderphone.com/v1/mcp` ஐப் பயன்படுத்துங்கள். செல்லுபடியாகும் அங்கீகாரம் இல்லாத கோரிக்கைக்கு `401` கிடைக்கும்; அதில்:

```http
WWW-Authenticate: Bearer resource_metadata="https://api.thunderphone.com/.well-known/oauth-protected-resource"
```

அந்த ஆவணத்தைப் பெறுங்கள்; பின்னர் அங்கீகார சர்வரின் மெட்டாடேட்டாவை `https://api.thunderphone.com/.well-known/oauth-authorization-server` இல் பெறுங்கள். வள மெட்டாடேட்டா `/.well-known/oauth-protected-resource/v1/mcp` இலும் கிடைக்கும். எண்ட்பாயிண்ட்களை உருவாக்குவதற்குப் பதிலாக, திரும்ப வழங்கப்பட்ட எண்ட்பாயிண்ட்களைப் பயன்படுத்துங்கள். வள அடையாளங்காட்டி `https://api.thunderphone.com/v1/mcp` ஆகும்.

சர்வர் **S256 PKCE** உடன் அங்கீகாரக் குறியீடு, மாற்றிச் சுழற்றப்படும் புதுப்பிப்பு டோக்கன்கள், பொது டைனமிக் கிளையன்ட் பதிவு, ரத்துசெய்தல் மற்றும் சாதன அங்கீகார கிராண்டை ஆதரிக்கிறது. கிளையன்ட் ரகசியங்கள் அல்லது மறைமுக கிராண்டுகள் இல்லை. OpenID கண்டறிதலும் `/.well-known/openid-configuration` இல் கிடைக்கிறது; இதில் அதே அங்கீகார-சர்வர் புலங்களுடன் `subject_types_supported: ["public"]` மற்றும் userinfo எண்ட்பாயிண்டும் அடங்கும். ID டோக்கன்கள் மற்றும் கிளையன்ட் ID மெட்டாடேட்டா ஆவணங்கள் (CIMD) ஆதரிக்கப்படவில்லை.

### பொது கிளையன்ட்டைப் பதிவு செய்யுங்கள்

`POST /v1/oauth/register` க்கு JSON அனுப்புங்கள்:

```json
{
  "client_name": "My MCP client",
  "redirect_uris": ["http://127.0.0.1:8765/callback"],
  "token_endpoint_auth_method": "none",
  "grant_types": ["authorization_code", "refresh_token"],
  "response_types": ["code"]
}
```

திரும்ப வழங்கப்பட்ட `client_id` ஐச் சேமியுங்கள். திருப்பிவிடல்கள் HTTPS-ஐ அல்லது `127.0.0.1` அல்லது `localhost` இல் HTTP-ஐப் பயன்படுத்த வேண்டும். போர்ட் மற்றும் பாதை உட்படத் துல்லியமான கால்பேக் URI-ஐப் பதிவு செய்யுங்கள். துண்டுகள் மற்றும் உட்பொதிக்கப்பட்ட சான்றுகள் நிராகரிக்கப்படும். விருப்பமான `client_uri` மற்றும் `logo_uri` HTTPS-ஐப் பயன்படுத்த வேண்டும்; பதிவின்போது ThunderPhone அவற்றைப் பெறாது. பதிவுக்கு விகித வரம்பு உள்ளது. பதிவுசெய்யப்பட்ட கிளையன்ட்கள் காலாவதியாகாது; இணைப்பு ரத்துசெய்யப்படும்போதும் பதிவுசெய்யப்பட்ட நிலையிலேயே இருக்கும். HTTPS கால்பேக்குகளில் `https://chatgpt.com/connector/oauth/<id>` மற்றும் `https://chatgpt.com/connector_platform_oauth_redirect` அடங்கும். ஒவ்வொரு இணைப்பும் தனிப்பட்ட கிளையன்ட்டைப் பதிவு செய்யலாம்.

### அங்கீகாரக் குறியீடு

கண்டறியப்பட்ட அங்கீகார எண்ட்பாயிண்ட்டை `client_id`, துல்லியமாகப் பதிவுசெய்யப்பட்ட `redirect_uri`, `response_type=code`, சீரற்ற `state`, `scope`, `code_challenge`, `code_challenge_method=S256`, மற்றும் `resource=https://api.thunderphone.com/v1/mcp` உடன் திறக்குங்கள். புதிய உயர்-என்ட்ரோபி PKCE சரிபார்ப்பானின் பேடிங் இல்லாத base64url SHA-256 டைஜெஸ்டாக சவாலை கணக்கிடுங்கள். குறியீட்டை மாற்றுவதற்கு முன் திரும்ப வந்த `state` மற்றும் `iss` ஐச் சரிபாருங்கள். மறுப்பு மற்றும் நெறிமுறைப் பிழைகள் உட்பட ஒவ்வொரு அங்கீகாரப் பதிலும், கண்டறியப்பட்ட `issuer` உடன் துல்லியமாகப் பொருந்தும் `iss` மூலம் வழங்குநரை அடையாளப்படுத்தும். செல்லுபடியாகாத கிளையன்ட் அல்லது கால்பேக்கிற்கான பிழைகள், அந்த கால்பேக்கிற்கு திருப்பிவிடாமல் உள்நாட்டிலேயே திரும்ப வழங்கப்படும்.

படிவ குறியாக்கத்தைப் பயன்படுத்தி `POST /v1/oauth/token` இல் மாற்றுங்கள் (JSON-மும் ஏற்கப்படும்):

```text
grant_type=authorization_code
client_id=<your client id>
code=<single-use authorization code>
redirect_uri=<exact registered redirect URI>
code_verifier=<original PKCE verifier>
resource=https://api.thunderphone.com/v1/mcp
```

விருப்பமான `resource` அளவுரு அங்கீகாரம் மற்றும் டோக்கன் கோரிக்கைகள் இரண்டிலும் ஏற்கப்படும் (புதுப்பிப்பு மற்றும் சாதன மாற்றங்கள் உட்பட). அது விடுபட்டால், கண்டறியப்பட்ட MCP வளமே இயல்புநிலையாகும். அது வழங்கப்பட்டால், அந்த வளத்துடன் துல்லியமாகப் பொருந்த வேண்டும்; பிற மதிப்புகள் `invalid_target` ஐத் திரும்ப வழங்கும். அணுகல் டோக்கன்கள் அந்த ஆடியன்ஸைக் கொண்டிருக்கும்; ஆடியன்ஸ் இல்லாத அல்லது வேறுபட்ட ஆடியன்ஸ் கொண்ட டோக்கன்களை MCP `401` மற்றும் கண்டறிதல் சவாலுடன் நிராகரிக்கும்.

அங்கீகாரக் கோரிக்கைகளும் குறியீடுகளும் 10 நிமிடங்களுக்குப் பிறகு காலாவதியாகும். ஒவ்வொரு டோக்கன் பதிலும் `access_token`, `token_type` (`Bearer`), `expires_in` (இயல்பாக 3600 வினாடிகள்), `refresh_token`, `scope`, `organization_id`, மற்றும் `organization_name` ஆகியவற்றைக் கொண்டிருக்கும். அணுகல் டோக்கன்களை `Authorization: Bearer` தலைப்பு வழியாக மட்டும் அனுப்புங்கள். டோக்கன்களை URL-கள், பதிவுகள், மூலக் கட்டுப்பாடு அல்லது அரட்டையில் ஒருபோதும் வைக்காதீர்கள்.

### புதுப்பித்தல் மற்றும் ரத்துசெய்தல்

டோக்கன் எண்ட்பாயிண்ட்டில் `grant_type=refresh_token`, `client_id`, `refresh_token`, மற்றும் `resource` உடன் புதுப்பியுங்கள். புதிய புதுப்பிப்பு டோக்கனை அணு முறையில் சேமித்து, பழையதைப் பயன்படுத்துவதை நிறுத்துங்கள். வெற்றிகரமான புதுப்பிப்பு இல்லாமல் 30 நாட்களுக்குப் பிறகு புதுப்பிப்பு டோக்கன்கள் காலாவதியாகும். விருப்பமான `scope`, வழங்கப்பட்ட அனுமதிகளைச் சுருக்கலாம். `offline_access` எப்போதும் சேர்க்கப்படும்; புதுப்பிப்பு டோக்கன்கள் எப்போதும் வழங்கப்படும். `scope` இல்லாத தொடக்கக் கோரிக்கை `offline_access` மட்டும் வழங்கும்; எனவே கிளையன்ட்கள் தேவையான அனுமதிகளைக் கோர வேண்டும்.

குறியீட்டை மீண்டும் பயன்படுத்துவதும் மாற்றிச் சுழற்றப்பட்ட புதுப்பிப்பு டோக்கனை மீண்டும் பயன்படுத்துவதும் முழு அங்கீகாரத்தையும் ரத்துசெய்யும். ஒரு கிளையன்ட்டிற்குள் புதுப்பிப்புகளை வரிசைப்படுத்துங்கள்; வெற்றிகரமாக மாற்றப்பட்ட சான்றை மீண்டும் இயக்குவது பாதுகாப்பான மறுமுயற்சி உத்தி அல்ல.

இணைப்பைத் துண்டிக்க, `token` மற்றும் `client_id` ஐ `POST /v1/oauth/revoke` க்கு அனுப்புங்கள். எந்த டோக்கனை ரத்துசெய்தாலும், அதிலிருந்து வழங்கப்பட்ட அனைத்து டோக்கன்கள் உட்பட அதன் அங்கீகாரம் ரத்துசெய்யப்படும். அறியப்படாத டோக்கன், அது உள்ளதா என்பதை வெளிப்படுத்தாமல் வெற்றியைத் திரும்ப வழங்கும். டாஷ்போர்டு அமர்வுகள் `GET /v1/oauth/grants` இல் தங்களுடைய அங்கீகாரங்களைப் பட்டியலிடலாம்; `X-ThunderPhone-Org` அமைப்பைத் தேர்ந்தெடுக்கும்போது `DELETE /v1/oauth/grants/<id>` இல் ஒன்றை ரத்துசெய்யலாம்.

### சாதன அங்கீகாரம்

சாதன அங்கீகாரம் முன்பதிவுசெய்யப்பட்ட கிளையன்ட்களுக்கு மட்டுப்படுத்தப்பட்டுள்ளது; டைனமிக்காகப் பதிவுசெய்யப்பட்ட கிளையன்ட்கள் `unauthorized_client` ஐப் பெறும். முன்பதிவுசெய்யப்பட்ட பொது கிளையன்ட் `thunderphone-cli`, சாதன அங்கீகாரத்தையும் புதுப்பித்தலையும் ஆதரிக்கிறது. `client_id=thunderphone-cli` மற்றும் `scope` ஐ `POST /v1/oauth/device/code` க்கு அனுப்புங்கள். பயனருக்கு `user_code` மற்றும் `verification_uri` ஐக் காட்டுங்கள் அல்லது `verification_uri_complete` ஐத் திறக்குங்கள்.

`grant_type=urn:ietf:params:oauth:grant-type:device_code`, `client_id`, மற்றும் `device_code` உடன் டோக்கன் எண்ட்பாயிண்ட்டை வினவுங்கள்; திரும்ப வழங்கப்பட்ட `interval` வரை (5 வினாடிகள்) குறைந்தபட்சம் காத்திருங்கள். `authorization_pending` இல் தொடருங்கள். `slow_down` இல், அடுத்தடுத்த ஒவ்வொரு கோரிக்கைக்கும் பதிலில் திரும்ப வழங்கப்பட்ட புதிய `interval` ஐப் பயன்படுத்துங்கள் (5 வினாடிகள் அதிகரிக்கப்பட்டது). `access_denied`, `expired_token`, அல்லது பிற பிழைகளில் நிறுத்துங்கள். சாதனக் குறியீட்டை ஒருபோதும் தானாக அங்கீகரிக்காதீர்கள்.

முன்பதிவுசெய்யப்பட்ட `thunderphone-mcp` கிளையன்ட், எந்த போர்ட்டிலும் `http://127.0.0.1/callback` மற்றும் `http://localhost/callback` ஐ ஏற்கிறது. திட்டம், ஹோஸ்ட், பாதை மற்றும் க்வெரி பொருந்த வேண்டும்; டோக்கன் மாற்றம் அங்கீகாரத்தில் பயன்படுத்திய துல்லியமான திருப்பிவிடல் URI-ஐப் பயன்படுத்த வேண்டும் (போர்ட் உட்பட). டைனமிக்காகப் பதிவுசெய்யப்பட்ட கிளையன்ட்களுக்கு, போர்ட் உட்படத் துல்லியமான திருப்பிவிடல்-URI பொருத்தம் தேவைப்படுகிறது. வேறொரு பாதை தேவைப்பட்டால், வேறுபட்ட கால்பேக்கை டைனமிக்காகப் பதிவு செய்யுங்கள்.

### கணக்கு அடையாளம் மற்றும் பணியிட டொமைன் சரிபார்ப்புகள்

உங்கள் கிளையன்ட்டுக்குத் தேவையான செயல்பாட்டு ஸ்கோப்களுடன் `openid email` இரண்டையும் கோருங்கள். கண்டறியப்பட்ட `userinfo_endpoint` (`GET /v1/oauth/userinfo`) ஐ Bearer தலைப்பில் அணுகல் டோக்கனுடன் அழையுங்கள். வெற்றிகரமான பதிலில் உள்ளவை:

```json
{
  "sub": "123",
  "email": "person@example.com",
  "email_verified": true,
  "name": "Example User",
  "org_id": 456
}
```

`sub` நிலையான பயனர் அடையாளங்காட்டி; `org_id` என்பது ஒப்புதலின்போது தேர்ந்தெடுக்கப்பட்ட அமைப்பாகும். இந்த எண்ட்பாயிண்ட்டுக்கு இரண்டு அடையாள ஸ்கோப்களும் தேவை; அவற்றில் ஏதேனும் ஒன்று இல்லாவிட்டால் `403` திரும்ப வழங்கும். சரிபார்க்கப்பட்ட மின்னஞ்சல் சுயவிவரம் கணக்கில் இல்லாவிட்டால், சரிபார்க்கப்படாத மின்னஞ்சல் நம்பகமானது என்று உறுதிப்படுத்துவதற்குப் பதிலாக, `error=access_denied` உடன் `403` ஐத் திரும்ப வழங்கும். செல்லுபடியாகாத, காலாவதியான, ரத்துசெய்யப்பட்ட அல்லது தவறான-ஆடியன்ஸ் டோக்கன்கள் `401` ஐத் திரும்ப வழங்கும். மனித அமர்வு டோக்கன்களும் அமைப்பு API விசைகளும் userinfo ஐ அழைக்க முடியாது. எந்த ID டோக்கனும் வழங்கப்படாது.

## கிடைக்கக்கூடிய அனுமதிகள்

| குடும்பம் | ஸ்கோப்புகள் |
| --- | --- |
| ஏஜென்ட்கள் மற்றும் ஏஜென்ட் இறக்குமதிகள் | `agents:read`, `agents:write` |
| அழைப்புகள் | `calls:read`, `calls:write` |
| தொலைபேசி எண்கள் மற்றும் VoIP | `numbers:read`, `numbers:write` |
| அறிவு | `knowledge:read`, `knowledge:write` |
| பிரச்சாரங்கள் | `campaigns:read`, `campaigns:write` |
| ஒருங்கிணைப்புகள், webhook எண்ட்பாயிண்ட்கள், MCP சர்வர்கள் | `integrations:read`, `integrations:write` |
| குரல்கள் | `voices:read` |
| சோதனைக் காட்சிகள், சோதனை இயக்கங்கள், சரிபார்ப்பு | `testing:read`, `testing:write` |
| பில்லிங் | `billing:read` |
| கணக்கு அடையாளம் மற்றும் சரிபார்க்கப்பட்ட மின்னஞ்சல் | `openid`, `email` (இரண்டும் userinfo-க்கு அவசியம்) |
| நிலையான இணைப்பு | `offline_access` (எப்போதும் சேர்க்கப்படும்) |

GET, HEAD மற்றும் OPTIONS ஆகியவை படிப்பு ஸ்கோப்புகளைப் பயன்படுத்தும்; பிற முறைகள் எழுத்து ஸ்கோப்புகளைப் பயன்படுத்தும். குரல் மற்றும் பில்லிங் மாற்றங்கள் OAuth வழியாகக் கிடைக்காது; `POST /v1/voices/preview`, குரலின் கட்டமைப்பை மாற்றாமல் முன்னோட்டமிடுவதால் `voices:read`-ஐப் பயன்படுத்துகிறது. MCP கருவிகள், அவற்றின் அடிப்படை REST செயல்பாட்டின் ஸ்கோப்பைச் செயல்படுத்தும். அங்கீகரிக்கும் பயனர் இரு நிறுவனங்களிலும் சேர்ந்திருந்தாலும், நிறுவனங்களுக்கு இடையேயான மாற்றங்கள் மறுக்கப்படும். API விசை மேலாண்மை மற்றும் மனிதக் கணக்கு அமைப்புகள் உட்பட பிற API குடும்பங்கள் OAuth வழியாகக் கிடைக்காது. REST செயல்பாட்டில் அனுமதி இல்லையெனில், `WWW-Authenticate: Bearer error="insufficient_scope", scope="..."` உடன் `403` திரும்பும். செல்லாத அல்லது காலாவதியான அணுகல் டோக்கன்கள் `401` திருப்பும்.


### MCP கருவி அங்கீகாரச் சைகைகள்

`tools/list`-இல் உள்ள ஒவ்வொரு கருவியிலும், அந்தக் கருவியின் REST செயல்பாட்டுக்கான ஸ்கோப்புடன் `securitySchemes: [{"type": "oauth2", "scopes": ["agents:read"]}]` இருக்கும். பொது ஆவணக் கருவிகள் வெற்று ஸ்கோப் பட்டியலைப் பயன்படுத்தும், இருப்பினும் அவற்றுக்கு அங்கீகரிக்கப்பட்ட இணைப்பு அவசியம்.

கருவியின் ஸ்கோப் இல்லாத செல்லுபடியாகும் டோக்கன், `isError: true` கொண்ட JSON-RPC `result`, `content`-இல் விளக்க உரை மற்றும் `_meta["mcp/www_authenticate"]` உடன் HTTP `200` பெறும். பிந்தையது `resource_metadata`, `error="insufficient_scope"`, `error_description` மற்றும் தேவையான `scope` கொண்ட Bearer சவாலைக் கொண்ட வரிசையாகும். கருவி இயக்கப்படாது. விரிவாக்கப்பட்ட ஒப்புதலைக் கோர இந்தச் சவாலைப் பயன்படுத்தவும். இல்லாத அல்லது செல்லாத அங்கீகாரம் தொடர்ந்து `WWW-Authenticate` உடன் HTTP `401` திருப்பும்; REST ஸ்கோப் தோல்விகள் தொடர்ந்து HTTP `403` திருப்பும்.

## நற்சான்று தக்கவைப்பு

API, ஸ்டேஜிங் மற்றும் புரொடக்ஷனில் ஒவ்வொரு மணிநேரமும் `python manage.py oauth_cleanup`-ஐ இயக்குகிறது. இது காலாவதியான அங்கீகாரக் கோரிக்கைகள் மற்றும் சாதனக் குறியீடுகளை அகற்றும். காலாவதியான அணுகல் டோக்கன்கள், அங்கீகாரக் குறியீடுகள் மற்றும் புதுப்பிப்பு-டோக்கன் ஹாஷ்கள், அவற்றின் கிராண்ட் ரத்து செய்யப்பட்ட பிறகு அல்லது முழுக் குடும்பமும் செயலிழந்த பிறகே நீக்கப்படும். குடும்பத்தில் பயன்படுத்தக்கூடிய புதுப்பிப்பு டோக்கன், அங்கீகாரக் குறியீடு, அங்கீகரிக்கப்பட்ட சாதனக் குறியீடு அல்லது அணுகல் டோக்கன் இருக்கும் வரை பயன்படுத்தப்பட்ட ஹாஷ்கள் தக்கவைக்கப்படும்; எனவே சுத்திகரிப்பு மறுஇயக்கக் கண்டறிதலை முடக்காது.
