시작하기
이 가이드는 RealityTwin을 임베드하는 데 필요한 두 가지 통합을 안내합니다. 즉, (백엔드에서) RealityConnect API에 대해 임베드 세션을 생성하는 것과 (프런트엔드에서) 그 세션을 SDK에 전달하는 것입니다. SDK 자체에 특화된 모든 내용(설치 세부 정보, 초기화, 전체 명령 및 observable 표면, 오류 코드, 실행 가능한 플레이그라운드)은 신뢰할 수 있는 출처인 @prevu3d/realityconnect-embed 패키지의 README에 있습니다.
사전 요구 사항
섹션 제목: “사전 요구 사항”시작하기 전에 다음을 준비하세요.
- 조직의 보안 설정에서 RealityConnect Embed가 활성화된 Enterprise 요금제.
- Client Credentials 플로우를 사용하는 RealityConnect API OAuth 애플리케이션. 아직 설정하지 않았다면 먼저 Client Credentials 플로우 가이드를 따르세요.
- 임베드하려는 트윈의 ID.
- SDK를 설치할 계정에 대한 비공개
prevu3d/realityconnect-embedGitHub 리포지토리의 읽기 접근 권한. 접근 권한은 요청에 따라 고객별로 수동으로 부여됩니다. 접근이 필요한 GitHub 사용자 이름을 **고객 성공 관리자(CSM)**에게 전달하면 Prevu3D가 이들을 리포지토리에 추가합니다. GitHub Packages의 패키지 가시성은 리포지토리 가시성을 따르므로read:packagesPAT만으로는 충분하지 않으며 리포지토리 접근 권한도 필요합니다.
전체 연동 방식
섹션 제목: “전체 연동 방식”대략적으로 임베드 세션은 다음과 같이 흐릅니다.
- 백엔드가 RealityConnect API에 인증하고 특정 트윈에 대해
create-session을 호출합니다. API는 토큰과 URL을 반환합니다. - 백엔드는 브라우저에 안전한 값(액세스 토큰, 프런트엔드 URL, 리전 API URL)을 프런트엔드로 전달합니다.
- 프런트엔드는 이 값들을 SDK에 전달하고, SDK는 iframe을 삽입하여 트윈과 양방향 채널을 엽니다.
- 현재 토큰이 만료되기 전에 백엔드가
refresh-session을 호출하고 새 값을 프런트엔드로 다시 전달합니다.
OAuth 클라이언트 시크릿은 절대 브라우저에 도달해서는 안 되며, 백엔드만 사용합니다.
1단계: 임베드 세션 생성(백엔드)
섹션 제목: “1단계: 임베드 세션 생성(백엔드)”임베드 세션 관리는 RealityConnect API를 재사용합니다. Client Credentials 플로우 가이드에 설명된 대로 정확히 Client Credentials 플로우로 인증한 다음, 트윈에 대해 두 가지 임베드 세션 작업을 호출합니다.
| 작업 | 목적 |
|---|---|
POST {apiUrl}/twin/{twinId}/create-session | 세션을 시작합니다. accessToken, refreshToken, frontendUrl, apiUrl을 반환합니다. |
POST {apiUrl}/twin/{twinId}/refresh-session | (본문에 담아 보낸) refreshToken을 새 accessToken 및 refreshToken과 교환합니다. |
두 호출 모두 Client Credentials 플로우에서 얻은 bearer 액세스 토큰을 Authorization 헤더에 사용합니다. 정확한 경로와 스키마는 인터랙티브 API 참조를 확인하세요.
2단계: SDK 설치(프런트엔드)
섹션 제목: “2단계: SDK 설치(프런트엔드)”GitHub 계정에 접근 권한이 부여되면(사전 요구 사항 참조), 비공개 GitHub Packages npm 레지스트리에서 SDK를 @prevu3d/realityconnect-embed로 설치합니다. SDK README에는 일회성 .npmrc 및 Personal Access Token 설정이 처음부터 끝까지 문서화되어 있습니다.
3단계: 세션을 SDK에 전달
섹션 제목: “3단계: 세션을 SDK에 전달”create-session 응답 필드를 백엔드에서 프런트엔드로 전달하고 SDK 구성에 매핑합니다.
create-session 필드 | SDK 구성 | 비고 |
|---|---|---|
frontendUrl | iframeUrl | 임베드 경로와 트윈 ID를 덧붙입니다: `${frontendUrl}/embed/${twinId}`. |
apiUrl | backendUrl | 임베드가 통신하는 리전 API 베이스. |
accessToken | platformJWT | 임베드가 인증에 사용하는 서명된 세션 토큰. |
그 이후에는 SDK README를 따라 패키지를 설치하고, 뷰어를 초기화하고, 트윈을 제어하세요.
4단계: 세션 유지
섹션 제목: “4단계: 세션 유지”임베드 세션은 수명이 짧습니다. create-session이 반환하는 accessToken은 일정 시간 후 만료됩니다. 그 기간을 넘어 트윈을 계속 실행하려면 백엔드에서 세션을 갱신하고 새 액세스 토큰을 실행 중인 SDK에 전달하세요 — iframe을 다시 만들 필요가 없습니다.
일반적인 패턴:
-
백엔드에서, 현재 사용자의 트윈에 대해 저장된
refreshToken을 읽고,refresh-session을 호출하고, 새refreshToken을 저장하고, 새accessToken(및 기타 세션 필드)을 브라우저에 반환하는 엔드포인트를 제공합니다. -
프런트엔드에서, 현재 토큰이 만료되기 직전에 갱신을 예약합니다.
-
새 세션이 도착하면
twin.updateAccessToken(newAccessToken)을 호출하여 새 액세스 토큰을 실행 중인 SDK에 전달합니다:await twin.updateAccessToken(newAccessToken);트윈은 다음 백엔드 요청에서 새 JWT를 이어서 사용합니다 — 열린 구독, 카메라 상태, 로드된 워크플로는 모두 유지됩니다. 이 호출은 수락 시
true, 거부 시false로 resolve됩니다(onError를 통해서도 알림).onReady가 발생하기 전에 호출하면RealityConnectEmbedError('TWIN_NOT_READY')가 throw됩니다.
정확한 예약 전략(만료 전 고정 타이머, 사용자 활동 시, 탭 가시성 변경 시 등)은 애플리케이션에 달려 있습니다.
유의할 사항
섹션 제목: “유의할 사항”- 페이지가 인터페이스를 소유합니다. 임베드는 순수 뷰어입니다. 자체 컨트롤을 구축하고 SDK 명령에 연결하세요. 임베드가 포함하는 것과 포함하지 않는 것은 소개를 참조하세요.
- 자격 증명은 서버 측에 보관하세요. 세션의 요청과 갱신은 백엔드에서만 수행하세요.
- 세션은 만료됩니다. 통합의 일부로 토큰 갱신을 계획하세요.
- Enterprise 및 보안 설정. 임베드는 조직에 대해 활성화된 경우에만 로드됩니다.
SDK 참조
섹션 제목: “SDK 참조”@prevu3d/realityconnect-embed 패키지는 SDK 작업을 위한 완전한 참조입니다. 다음 내용은 해당 README를 읽어 보세요.
- 비공개 GitHub Packages 레지스트리를 위한
.npmrc및 Personal Access Token 전체 설정 RealityConnectEmbed.init(config)구성 참조- 각 네임스페이스의 액션 및 상태 observable(내비게이션, 객체, POI, POV, 유틸리티)
- 공유 가능한 링크를 위한 카메라 뷰 인코딩 플로우
- 문서화된 모든 오류 코드와 발생 조건
- 명령 표면을 탐색하기 위해 라이브 트윈을 가리킬 수 있는 실행 가능한 플레이그라운드
다음 단계
섹션 제목: “다음 단계”- 소개: 기능 개요.
- Client Credentials 플로우: 이 가이드가 기반으로 하는 인증.
- 인터랙티브 API 참조: RealityConnect API 전체 카탈로그.
- GitHub의 라이브 예제: 복사해서 사용할 수 있는 동작하는 Vue.js 통합.
@prevu3d/realityconnect-embed: 소스 리포지토리