該插件協議與OAuth兼容。我們期望的OAuth流程的一個簡單示例應如下所示:
- 首先,在ChatGPT插件商店中選擇“開發自己的插件”,并輸入托管您的插件的域名(不能是localhost)。
- 在ai-plugin.json中,将auth.type設置為"oauth",如我們的OAuth示例中所示。
- 然後,您将被提示輸入OAuth客戶端ID和客戶端密鑰。
- 客戶端ID和密鑰可以是簡單的文本字符串,但應遵循OAuth的最佳實踐。
- 我們存儲客戶端密鑰的加密版本,而客戶端ID對最終用戶是可用的。
- 一旦您将客戶端ID和客戶端密鑰添加到ChatGPT UI中,您将收到一個驗證令牌。
- 将驗證令牌添加到ai-plugin.json文件的auth部分,如下所示。
- OAuth請求将包括以下信息:request={'grant_type': 'authorization_code', 'client_id': 'id_set_by_developer', 'client_secret': 'secret_set_by_developer', 'code': 'abc123', 'redirect_uri': 'https://chat.openai.com/aip/plugin-some_plugin_id/oauth/callback'}
- 為了讓某人使用帶有OAuth的插件,他們需要安裝插件,然後在ChatGPT UI中顯示“使用...登錄”按鈕。
- authorization_url端點應返回如下響應:{ "access_token": "example_token", "token_type": "bearer", "refresh_token": "example_token", "expires_in": 59 }
- 在用戶登錄過程中,ChatGPT會使用指定的authorization_content_type向您的authorization_url發出請求,我們期望得到一個訪問令牌和一個可選的刷新令牌,我們用它定期獲取新的訪問令牌。
- 每次用戶向插件發出請求時,用戶的令牌都會在Authorization頭中傳遞:(“Authorization”:“[Bearer/Basic][用戶的令牌]”)。
出于安全原因,我們要求OAuth應用程序使用state參數。
以下是ai-plugin.json文件中的OAuth配置的示例:
```json
"auth": {
"type": "oauth",
"client_url": "https://example.com/authorize",
"scope": "",
"authorization_url": "https://example.com/auth/",
"authorization_content_type": "application/json",
"verification_tokens": {
"openai": "Replace_this_string_with_the_verification_token_generated_in_the_ChatGPT_UI"
}
},
```
為了更好地理解OAuth的URL結構,以下是字段的簡短描述:
- 當您使用ChatGPT設置插件時,您将被要求提供您的OAuth client_id和client_secret。
- 當用戶登錄插件時,ChatGPT會将用戶的浏覽器定向到"[client_url]?response_type=code&client_id=[client_id]&scope=[scope]&state=xyz123&redirect_uri=https%3A%2F%2Fchat.openai.com%2Faip%2F[plugin_id]%2Foauth%2Fcallback"
- plugin_id是通過發送到您的OAuth端點的請求傳遞的(請注意,它今天在ChatGPT UI中不可見,但将來可能會)。您可以在那裡檢查請求以查看plugin_id。我們期望在重定向回redirect_uri時傳遞狀态。如果狀态與初始狀态不匹配,或已過期,身份驗證流程将失敗。
- 在您的插件重定向回給定的redirect_uri之後,ChatGPT将通過向authorization_url發出POST請求并使用内容類型authorization_content_type和參數{ “grant_type”: “authorization_code”, “client_id”: [client_id], “client_secret”: [client_secret], “code”: [重定向返回的代碼], “redirect_uri”: [與之前相同的重定向uri] }來完成OAuth流程。
评论