REST API 관련 컨설팅 중 학습한 내용을 공유합니다.
고객사의 요청으로 VendHQ 사의 REST 서비스와 연동을 진행했습니다.
OAuth 2.0 연동 중 웹브라우저 이슈가 있어 해결방안을 공유합니다.
해당 이슈는 VCL과 FMX 두가지 TWebBrowser가 동일합니다.
크로미움 기반 웹브라우저 컴포넌트 설치
CEF4Delphi는 크로미움 기반 웹브라우저 써드파티 컴포넌트로 오픈소스로 진행됩니다.
깃허브 저장소를 통해 제공하고 있습니다.
CEF4Delphi를 사용하려면 컴포넌트 설치 후 실행(및 배포) 시 크로미움 관련 라이브러리들을 함께 배포해야 합니다.
CEF4Delphi 다운로드
CEF4Delphi 깃허브 페이지에서 컴포넌트를 다운로드 합니다.(Clone or download > Download ZIP)
다운로드 받은 파일을 압축 해제 후 적절한 라이브러리 저장 경로에 이동합니다.(해당 경로의 패키지를 설치하고 델파이에 링크하게 됩니다.)
CEF4Delphi 컴포넌트 설치
델파이를 실행하고 다운로드 받은 파일들에서 .\packages\CEF4Delphi.dpk 패키지 프로젝트 파일을 엽니다.
프로젝트에서 오른쪽 마우스 클릭 후 팝업 메뉴에서 인스톨 메뉴를 선택해 설치합니다.
라이브러리 패스 추가
패키지 설치 후 CEF4Delpih 소스코드를 델파이 라이브러리 패스에 추가합니다.
델파이 라이브러리 화면을 표시합니다.
Tools > Options, Language > Delphi Options > Library
플랫폼을 선택 후 Library path에 CEF4Delphi 소스 디렉토리를 추가합니다.
CEF4Delphi 프로그램 실행
오류 내용을 보면 CEF3 바이너리가 누락되었다는 내용입니다.
일반적으로 위와 같은 오류의 조치방법은 실행파일과 같은 경로 또는 시스템 패스에 해당 라이브러리들을 복사하는 방법이 있습니다.
하지만 CEF4Delphi는 소스코드 내에서 해당 경로를 지정하는 방법을 제공합니다.
CEF 바이너리 지정
SimpleBrowser2의 프로젝트 파일을 열면 다음과 같이 GlobalCEFApp 전역변수와 각종 경로를 지정하는 코드가 주석처리 되어 있습니다.
경로를 지정하는 코드의 주석을 풀고, 해당 경로에 CEF 바이너리를 넣거나 경로를 임의로 지정할 수 있습니다.
GlobalCEFApp.FrameworkDirPath := 'cef'; 경로는 실행파일과 같은 경로의 cef 디렉토리를 의미합니다.
우리는 위의 코드에서 주석 해제 후 지정한 디렉토리(.\cef)에 CEF 바이너리를 복사하도록 하겠습니다.
CEF 바이너리 다운로드
CEF4Delphi 깃허브 페이지에서 CEF 바이너리를 다운로드 제공합니다.
윈도우즈 32비트 플랫폼 애플리케이션에서 CEF 이용 시 32 bits를 다운로드 합니다.
(64비트 프로젝트 개발 시 64 bits를 다운로드 합니다.)
CEF4Delphi 컴포넌트의 경로 하위 bin 디렉토리에 다운로드 받은 파일을 압축해제 합니다.
CEF 바이너리 복사
SimpleBrowser2 데모를 컴파일하면 .\CEF4Delphi\bin 디렉토리에 실행파일이 생성됩니다.
(Project > Options > Delphi Compiler > Output directory가 "..\..\bin"으로 설정)
bin 디렉토리 하위에 cef 디렉토리를 생성합니다.
CEF 바이너리 파일 중 아래 디렉토리의 모든 파일과 디렉토리를 생성한 cef 디렉토리에 복사합니다.
- Release\*.*
- Resources\*.*
이후 다시 데모 프로젝트를 실행하면 오류없이 정상 실행을 확인할 수 있습니다.
배포 시에도 실행파일 하위 cef 디렉토리를 함께 배포하거나, CEF 바이너리 디렉토리를 지정해야 합니다.