defineConnectionProvider({ type: 'oauth', ... }) を使用しているアプリは移行の必要がありません。
defineConnectionProvider
アプリの接続をどのように取得するかを宣言する
defineConnectionProvider
アプリの接続をどのように取得するかを宣言する
接続プロバイダーは、アプリに必要な OAuth のハンドシェイクを記述します。 ユーザーがアプリの設定で”接続を追加”をクリックし、プロバイダーの同意画面を完了すると、そのワークスペースに 主なポイント:
ConnectedAccount の行が作成されます。動作するセットアップには、2 つのファイルが必要です — 接続プロバイダーと、OAuth クライアント認証情報を保持する defineApplication 上の対応する serverVariables 宣言です。src/connection-providers/linear-connection.ts
src/application.config.ts
listConnections({ providerName })で使用される一意の識別子文字列がnameです(kebab-case、^[a-z][a-z0-9-]*$に一致する必要があります)。displayNameはアプリごとの設定タブおよび AI ツール一覧に表示されます。clientIdVariable/clientSecretVariableは値ではなく名前です —defineApplication.serverVariablesで宣言されたキーと一致している必要があります。 実際のclient_idとclient_secretは、アプリ登録 UI を通じてサーバー管理者が入力し、あなたのリポジトリにコミットされることはありません。applicationVariablesではなくserverVariablesを使用してください — OAuth の認証情報はサーバー全体で共有され、Twenty サーバーごとに 1 つの OAuth アプリとなります。- 両方の
serverVariablesが入力されるまで、アプリごとの設定タブには”サーバー管理者が必要”というヒントが表示され、“接続を追加”ボタンは無効になります。 - 現在サポートされる値は
type: 'oauth'のみです。 この判別子は前方互換です。将来のタイプ('pat'、'api-key'、…) は、oauthに並ぶ新しいサブ設定ブロックを追加します。
listConnections / getConnection
ロジック関数から接続を使用する
listConnections / getConnection
ロジック関数から接続を使用する
ロジック関数ハンドラー内では、各接続には次の項目があります:
主なポイント:
listConnections({ providerName }) が指定したプロバイダーに対するこのアプリの ConnectedAccount 行を、更新済みのアクセストークン付きで返します。src/logic-functions/handlers/create-linear-issue-handler.ts
| フィールド | 説明 |
|---|---|
id | 一意の行 ID。単一の接続を再取得するには getConnection(id) に渡します。 |
visibility | 'user'(ワークスペースの 1 メンバー専用)または 'workspace'(全メンバーと共有) |
scopes | 連携先プロバイダーによって付与された OAuth 権限(visibility とは別で、無関係です) |
userWorkspaceId | 所有者の userWorkspace ID — HTTP ルートトリガーで”要求ユーザーの接続”を選ぶのに役立ちます |
accessToken | 新しい OAuth アクセストークン(期限切れの場合は自動更新) |
name / handle | 接続の表示名(OAuth コールバック時に自動取得。ユーザーが名称変更可能) |
authFailedAt | 直近の更新に失敗した場合に設定されます。ユーザーは再接続する必要があります。 |
- プロバイダーで絞り込むには
{ providerName }を渡します。省略すると、このアプリが保有するすべてのプロバイダーの接続を取得します。 - サーバーは返却前にアクセストークンを透過的に更新します。 ハンドラーは常に利用可能なトークン(または
authFailedAtが設定された状態)を受け取ります。 getConnection(id)は単一行の取得に相当します。
ユーザー単位 vs ワークスペース共有の可視性
ユーザーがプライベートと共有の認証情報を選ぶ方法
ユーザー単位 vs ワークスペース共有の可視性
ユーザーがプライベートと共有の認証情報を選ぶ方法
ユーザーが”接続を追加”をクリックすると、可視性の選択を求められます:(ユーザー、プロバイダー)ごとに複数の接続が許可されているため、同一ユーザーが “Personal Linear” と “Work Linear” を並行して保持できます。
- 自分だけ — 認証情報は接続したユーザー専用です。 そのユーザーの権限で呼び出される任意のロジック関数(
isAuthRequired: trueの HTTP ルートトリガー)は参照できますが、cron トリガーやデータベースイベントは参照できません。 - ワークスペースで共有 — どのワークスペースメンバーでもその認証情報を使用できます。 リクエストユーザーを持たないため、Cron/データベースのトリガーからも参照されます。
一度きりのプロバイダー設定
サードパーティサービスに OAuth アプリを登録する
一度きりのプロバイダー設定
サードパーティサービスに OAuth アプリを登録する
各接続プロバイダーごとに、まずサーバー管理者がサードパーティ側で OAuth アプリを登録する必要があります。
- プロバイダーの開発者設定に移動します(例: https://linear.app/settings/api/applications/new)。
- Redirect URI を
\<SERVER_URL>/auth/apps/callbackに設定します。 - 生成された Client ID と Client Secret をコピーします。
- サーバー管理者として Twenty でインストール済みアプリを開き、対応する
serverVariablesに値を設定します。 - その後、ワークスペースメンバーはアプリごとの Connections セクションから接続を追加できます。