defineConnectionProvider({ type: 'oauth', ... })를 사용하는 앱은 마이그레이션이 필요하지 않습니다.
defineConnectionProvider
앱의 연결을 얻는 방법을 선언합니다
defineConnectionProvider
앱의 연결을 얻는 방법을 선언합니다
연결 제공자는 앱에 필요한 OAuth 핸드셰이크를 설명합니다. 사용자가 앱 설정에서 “연결 추가”를 클릭하고 제공자의 동의 화면을 완료하면, 워크스페이스에 핵심 요점:
ConnectedAccount 행이 생성됩니다.정상 동작하려면 두 개의 파일이 필요합니다 — 연결 제공자, 그리고 OAuth 클라이언트 자격 증명을 보유하는 defineApplication의 해당 serverVariables 선언.src/connection-providers/linear-connection.ts
src/application.config.ts
name은listConnections({ providerName })에서 사용하는 고유 식별자 문자열입니다(kebab-case,^[a-z][a-z0-9-]*$와 일치해야 함).displayName은 앱별 설정 탭과 AI 도구 목록에 표시됩니다.clientIdVariable/clientSecretVariable은 값이 아닌 이름이며,defineApplication.serverVariables에 선언된 키와 일치해야 합니다. 실제client_id와client_secret은 서버 관리자가 앱 등록 UI를 통해 입력하며, 저장소에 커밋되지 않습니다.serverVariables(applicationVariables아님)을 사용하세요 — OAuth 자격 증명은 서버 전체에 적용되며 Twenty 서버마다 하나의 OAuth 앱만 사용합니다.- 두
serverVariables가 모두 채워질 때까지, 앱별 설정 탭에는 “서버 관리자 필요” 힌트가 표시되고 “연결 추가” 버튼이 비활성화됩니다. type: 'oauth'는 현재 지원되는 유일한 값입니다. 구분자는 전방 호환됩니다: 향후 유형('pat','api-key', …)oauth와 함께 새로운 하위 구성 블록이 추가됩니다.
listConnections / getConnection
로직 함수에서 연결 사용
listConnections / getConnection
로직 함수에서 연결 사용
로직 함수 핸들러 내부에서 각 연결에는 다음이 포함됩니다:
listConnections({ providerName })는 지정된 제공자에 대한 이 앱의 ConnectedAccount 행을 갱신된 액세스 토큰과 함께 반환합니다.src/logic-functions/handlers/create-linear-issue-handler.ts
핵심 요점:
- 제공자별로 필터링하려면
{ providerName }를 전달하세요; 생략하면 이 앱이 모든 제공자에서 보유한 모든 연결을 가져옵니다. - 서버는 반환하기 전에 액세스 토큰을 투명하게 갱신합니다. 핸들러는 항상 사용 가능한 토큰(또는
authFailedAt이 설정된 상태)을 보게 됩니다. getConnection(id)는 단일 행 버전입니다.
사용자가 비공개 자격 증명과 공유 자격 증명 사이를 선택하는 방법
사용자가 비공개 자격 증명과 공유 자격 증명 사이를 선택하는 방법
일회성 제공자 설정
서드파티 서비스에 OAuth 앱을 등록하세요
일회성 제공자 설정
서드파티 서비스에 OAuth 앱을 등록하세요
각 연결 제공자마다 서버 관리자가 먼저 서드파티에 OAuth 앱을 등록해야 합니다.
- 제공자의 개발자 설정으로 이동하세요(예: https://linear.app/settings/api/applications/new).
- Redirect URI를
\<SERVER_URL>/auth/apps/callback으로 설정하세요. - 생성된 Client ID와 Client Secret을 복사하세요.
- 서버 관리자 권한으로 Twenty에서 설치된 앱을 열고 → 해당
serverVariables에 값을 설정하세요. - 그런 다음 워크스페이스 구성원은 앱별 연결 섹션에서 연결을 추가할 수 있습니다.