요구 사항

사전 지식

  • AEM Mobile 이해
  • 표준 온디맨드 포털을 통한 콘텐츠 제작 및 게시 관련 지식
  • On-Demand Services API 사용 경험

요구 제품

  • AEM Mobile
  • API 키
  • On-Demand Services API에 대한 액세스

 

소개

Experience Manager Mobile PHP용 On-Demand Services SDK는 서드 파티 개발자가 On-Demand Services API(이전의 “Content Producer Service API”)와 쉽게 통합을 추진할 수 있도록 하는 라이브러리입니다.

SDK에서는 모범 사례, 오류에 대한 안전 조치 등의 다양한 오버헤드 및 API 요청에 따른 정확한 헤더 설정 등의 일반적이지만 중요한 지침을 다뤄 PHP 개발자에게 도움을 줍니다.

PHP용 On-Demand Services SDK 다운로드

참고:

아래에 첨부된 소프트웨어를 다운로드함으로써 사용자는 Experience Manager Mobile Services용 API 라이선스Adobe.com 사용 약관 및 Adobe 온라인 개인정보 보호정책을 읽었으며 이에 동의함을 인지합니다.

다운로드

최근 변경 사항에 대한 목록은 이 문서의 끝 부분에 있는 변경 로그를 참조하십시오.

개념 이해

On-Demand Services API는 인가된 액세스를 필요로 하므로 계속하기에 앞서 이 섹션의 내용을 완전히 이해해야 합니다.

인증

On-Demand Services API를 사용한 각 클라이언트(HTTPS) 요청은 요청 헤더에 다음이 제공되어야 합니다.

  • X-Dps-Api-Key: {{client_id}}
  • 인증: Bearer {{access token}}

액세스 토큰이 클라이언트 계정을 식별하는 동안 API 키가 클라이언트 접속에 On-Demand Services API를 부여합니다.

API 키를 요청하려면 On-Demand Services API 설명서를 확인하고 설명서의 내용에 따라 요청서를 다운로드해 작성합니다.

API 키를 받은 후 액세스 토큰을 생성할 수 있습니다. 액세스 토큰을 생성하려면 다음 작업을 수행하십시오.

  1. AEX 디바이스 토큰 Generator에 접속합니다.
  2. 유효한 클라이언트 ID를 입력합니다.
  3. 유효한 Adobe ID로 로그인합니다.
  4. 성공하면 디바이스 ID와 디바이스 토큰이 생성됩니다.
  5. 액세스 토큰을 생성하려면 클라이언트 ID, 디바이스 ID, 디바이스 토큰을 사용해 API를 요청합니다.

인증 정보:

  • 액세스 토큰은 24시간 이내에 만료됩니다.
  • 디바이스 ID와 디바이스 토큰은 사용되면 자동으로 갱신됩니다. 클라이언트는 디바이스 ID와 토큰을 사용해 필요할 때 새로운 액세스 토큰을 생성할 수 있습니다.
  • 디바이스 ID와 디바이스 토큰은 이를 생성하는 데 사용한 계정의 암호를 바꾸면 유효하지 않게 됩니다. 이러한 경우에는 디바이스 ID와 디바이스 토큰의 세트를 새로 생성하시기 바랍니다.

 

권한 부여

API 키 요청 과정 중 AEX 디바이스 토큰 Generator에 접속할 수 있는 Adobe ID를 세 개까지 요청할 수 있습니다. 이에 따라 최대 세 개의 Adobe ID 내에서만 프로젝트에 접속할 수 있습니다. 하지만 새로운 역할 및 권한을 통해 Adobe ID를 원하는 수의 프로젝트에 추가할 수 있습니다.

예를 들어 계정 A, B 및 C에 프로젝트가 있는 경우 계정 A를 계정 B와 C의 프로젝트에 추가할 수 있습니다. 이렇게 하여 계정 A에 대한 디바이스 ID와 디바이스 토큰만 생성이 필요하고 계정 A, B 및 C 내의 프로젝트에 접속할 수 있습니다.

시작하기

PHP용 SDK는 자동 로더 및 명칭 공간을 활용하여 필요한 클래스를 로드하는 PHP PSR-4 워크플로를 따릅니다.

자동 로더

자동 로더는 /aemmobilesdk/vendor/autoload.php에 있습니다. 자동 로더와 관련된 PHP 파일의 위치에 따라 경로/일부를 교체하는 다음의 방법으로 자동 로더를 로드할 수 있습니다.

require_once('path/to/aemmobilesdk/vendor/autoload.php');

명칭 공간

클래스 이름에 대한 명칭 공간은 /aemmobilesdk/ 내 폴더 구조를 따릅니다. 예를 들어 “아티클” 클래스 오브젝트는 /aemmobilesdk/contentService/Article.php에 있으며 명칭 공간은 다음과 같습니다.

use aemmobilesdk\contentService\Article

명칭 공간은 여러 버전의 PHP에서 대/소문자를 구분하기 때문에 정확한 폴더/파일명을 사용해야 합니다.

클래스 이름

각 클래스 오브젝트는 AEM Mobile의 구성 요소를 나타내며 자신의 전문 분야 내에서만 다룹니다. 예를 들어 “아티클” 클래스 오브젝트는 .article zip 파일 업로드와 같은 아티클 관련 업무만 다룹니다. “아티클” 클래스 오브젝트를 사용해 컬렉션에 아티클을 추가할 수 없으며, 이는 “컬렉션” 클래스 오브젝트의 역할입니다.

설정

모든 클래스 오브젝트는 초기화하는 동안 사용자 클라이언트의 인스턴스가 필요합니다. 모든 개요 클래스 오브젝트는 초기화해서는 안 됩니다(혹은 초기화할 수 없음).

사용자 클라이언트

“사용자” 클래스 오브젝트는 사용자 클라이언트를 나타내며 다음을 포함합니다.

  • 클라이언트 자격 증명
  • 클라이언트 프로젝트 ID
  • API 요청 실행

사용자 클라이언트를 초기화하려면 (다른 클래스 오브젝트와 마찬가지로) 명칭 공간을 지정해야 합니다.

use aemmobilesdk\userService\User; 
$objUser = new User();

클라이언트 자격 증명은 /aemmobilesdk/configuration/Credentials.php에서 설정할 수 있으며 자동으로 로드되거나 실행 시간 동안 다음의 기능을 불러와 로드됩니다.

$objUser->setClientId('enter-your-client-id');
$objUser->setClientSecret('enter-your-client-secret');
$objUser->setDeviceId('enter-your-device-id');
$objUser->setDeviceToken('enter-your-device-token');

액세스 토큰을 생성하기 위해 다음의 두 가지 기능을 불러올 수 있으며 각각 PHP 세션에서 액세스 토큰을 요청하고 저장합니다.

$objUser->requestToken(); 
$objUser->storeToken();

하나의 프로젝트를 대상으로 하려면 프로젝트 ID를 지정해야 합니다.

$objUser->setPublicationGuid('68957c92-99c2-47a3-8f54-83771ba21348');

프로젝트 ID는 대시보드의 URL(예: https://aemmobile.adobe.com/content/index.html#/publication/68957c92-99c2-47a3-8f54-83771ba21348/content) 또는 API를 통해 찾을 수 있습니다. 후자의 경우 다음의 기능을 사용하여 이 사용자 클라이언트와 연계된 프로젝트 목록을 가져올 수 있습니다.

$objUser->requestPermissions(); 
$arrPermissionList = $objUser->getResponse();

가장 좋은 방법은 클라이언트 사용자가 지정된 다음의 프로젝트에 액세스하기 전에 정확한 역할 및 권한을 가지고 있는지 검증하는 것입니다.

$objUser->requestPermissions(); 
$objUser->verifyPermissions();

API 요청

각 클래스 오브젝트 기능은 정확하게 요청 헤더와 데이터를 생성하지만 실제 실행은 앞에서 언급한 바와 같이 “사용자” 클래스 오브젝트에 있습니다. 클래스 오브젝트를 초기화하는 것은 사용자 클라이언트를 초기화하는 과정과 유사합니다.

use aemmobilesdk\contentService\Article; 
$objArticle = new Article($objUser);

날짜 지속성

사용자는 메타테이터 지속성이 유지되도록 해야 합니다. 예를 들어 한 컬렉션에 두 개의 아티클과 배너가 있는데 해당 컬렉션에 세 번째 아티클을 추가하고자 하는 경우 먼저 이 컬렉션 내 두 개의 아티클과 배너의 목록을 가져오고 세 번째 아티클을 추가(또는 첨부)한 후 네 개의 모든 항목을 사용해 컬렉션을 업데이트해야 합니다. 세 번째 아티클로만 컬렉션을 업데이트하면 세 번째 아티클만 남고 나머지 세 항목은 제거됩니다.

레시피로 실험

개념을 구체화하는 데 사용할 수 있는 레시피가 제공됩니다. 이 레시피는 /recipes/에서 찾을 수 있습니다. PHP용 SDK는 아직 개발 중이며, 지속적인 업데이트를 통해 PHP용 SDK를 개선하는 동시에 AEM Mobile에 새로운 기능이 추가될 예정임을 참고하시기 바랍니다.

변경 로그

 

2016/11/01 업데이트

  • 동적 배너에 대한 지원 및 레시피가 추가되었습니다.
  • 통합 서비스에 대한 PDF 직접 업로드 관련 지원이 추가되었습니다(아티클만 해당).

2016/02/22 업데이트

  • SDK 디렉터리는 dps2015sdk부터 aemmobilesdk까지 업데이트됩니다. 기존 및 앞으로의 PHP SDK 네임스페이스는 모두 aemmobilesdk로 업데이트해야 합니다.(특정 aemmobilesdk\userService\User; 사용).
  • Entity::publish() 및 Entity::unpublish()에 선택 사항 매개 변수를 추가했습니다. 일괄 게시 및 게시 취소 동작이 가능합니다. 선택 매개 변수에는 헤드 버전을 가진 엔티티 HREF 배열 목록이 포함되어야 합니다.
  • Entity::getHref()에 선택 사항 매개 변수를 추가했습니다. 헤드 버전이 없는 엔티티 HREF의 선별 제공이 가능합니다. 헤드 버전 제공이 선택 사항이기 때문에 엔티티를 컬렉션에 추가할 때 주로 사용됩니다.
  • recipes/publication/reset.php(이전의 deleteAll.php)에서 로직을 업데이트합니다. 이 레시피는 업데이트된 일괄 Entity::unpublish()에 사용되어 개별적으로 게시 취소하는 대신 엔티티 목록을 게시 취소(종속 내용에 따라)합니다.

2016/01/06 업데이트

  • 필수 엔티티 메타데이터를 내부에 저장합니다.
  • Entity::update() 요청을 만든 후 엔티티 클래스를 추가합니다.
  • 컬렉션 클래스에 저장된 컬렉션 콘텐츠 요소의 목록에서 특정 엔티티를 제거하기 위한 Collection::removeEntity()가 추가되었습니다. 이 새로운 기능을 사용하기에 앞서 Collection::requestContentElements()를 호출해야 하며, 그렇지 않은 경우에는 컬렉션 클래스 내의 목록이 비어 있게 됩니다.
  • 타임스탬프, Pretty-Print 오브젝트 등을 생성하는 것처럼 보다 일반적인 기능을 다루기 위한 유틸리티 정적 클래스가 추가되었습니다.
  • 이제 recipes/product/genIssueList.php에서 사용 가능하고 이미 다운로드되지 않은 경우 레시피가 썸네일 및 백그라운드 이미지를 다운로드합니다. 이전에는 genIssueList.php의 로드 시간을 단축하기 위해 별도의 레시피(recipes/product/downloadImage.php 참조)가 이미지만 다운로드하도록 생성되었습니다.
  • 컬렉션에 아티클을 추가하기 위한 레시피가 추가되었습니다(recipes/collection/addArticle.php 참조).
  • 컬렉션에서 아티클을 제거하기 위한 레시피가 추가되었습니다(recipes/collection/removeArticle.php 참조).
  • 직계 엔티티뿐만이 아닌 컬렉션의 모든 엔티티를 게시하기 위한 레시피가 추가되었습니다(recipes/collection/publishAllChildren.php 참조).

이 작업에는 Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License의 라이센스가 부여되었습니다.  Twitter™ 및 Facebook 게시물은 Creative Commons 약관을 적용받지 않습니다.

법적 고지 사항   |   온라인 개인 정보 보호 정책