Requisitos

Conocimientos previos necesarios

  • Explicación de AEM Mobile
  • Conocimientos sobre creación y publicación de contenido a través de On-Demand Portal estándar
  • Experiencia con la On-Demand Services API

Productos requeridos

  • AEM Mobile
  • Clave de API
  • Acceso a la On-Demand Services API

 

Introducción

On-Demand Services SDK para PHP de Experience Manager Mobile es una biblioteca que permite que los desarrolladores externos lleven a cabo fácilmente la integración con la On-Demand Services API (anteriormente denominada “Content Producer Service API”).

El SDK facilitará la labor de los desarrolladores en PHP al hacerse cargo de diversas cargas de trabajo, entre las que se encuentran las prácticas recomendadas, los mecanismos de seguridad automática contra errores y las directrices menores, pero importantes como, por ejemplo, la definición de los encabezados correctos por solicitud de API.

Descargue On-Demand Services SDK para PHP

Nota:

Al descargar el software que se indica a continuación, confirmo que he leído y acepto las condiciones de la licencia para las API de los servicios de Experience Manager Mobile, las Condiciones de uso de Adobe.com y la Política de privacidad en línea de Adobe.

Descargar

Para obtener una lista de los cambios más recientes, consulte el registro de cambios al final de este documento.

Comprensión de los conceptos

La On-Demand Services API requerirá de acceso autorizado, por lo que es importante que lea y comprenda completamente esta sección antes de continuar.

Autenticación

Para cada solicitud de cliente (HTTPS) que se cree mediante la On-Demand Services API, debe indicar lo siguiente en los encabezados de la solicitud:

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

La clave de API permitirá al cliente acceder a la On-Demand Services API, mientras que el autentificador de acceso identifica la cuenta del cliente.

Para solicitar una clave API, consulte la documentación de On-Demand Services API, y descargue y rellene el formulario de solicitud tal y como se explica en la documentación.

Tras recibir la clave de API, podrá generar un autentificador de acceso. Para generar el autentificador de acceso, haga lo siguiente:

  1. Vaya al AEX Device Token Generator.
  2. Introduzca un ID de cliente válido.
  3. Inicie sesión con un Adobe ID válido.
  4. Si la operación se realiza correctamente, se generarán un ID del dispositivo y un autentificador del dispositivo.
  5. Haga una solicitud de API utilizando el ID de cliente, el ID del dispositivo y el autentificador del dispositivo para generar el autentificador de acceso.

Notas sobre la autenticación:

  • El autentificador de acceso caducará en un plazo de 24 horas.
  • El ID del dispositivo y el autentificador del dispositivo se renovarán automáticamente mientras se estén utilizando. El cliente puede usar el ID del dispositivo y el autentificador para generar nuevos autentificadores de acceso cuando los necesite.
  • El ID y el autentificador del dispositivo no serán válidos si se actualizó la contraseña para la cuenta que se utilizó para generarlos. Si esto ocurre, genere un nuevo conjunto de ID y autentificador del dispositivo.

 

Autorización

Durante el proceso de solicitud de la clave de API, puede solicitar hasta tres Adobe ID que le permitirán acceder a AEX Device Token Generator. Esto significa que solo puede acceder a los proyectos con un máximo de tres Adobe ID. Sin embargo, con nuestras nuevas funciones y permisos, puede añadir el Adobe ID a cualquier cantidad de proyectos.

Por ejemplo, si tiene proyectos en la cuenta A, B y C, puede añadir la cuenta A a los proyectos de la cuenta B y C. De esta forma, solo tendrá que generar el ID del dispositivo y el autentificador del dispositivo para la cuenta y dispondrá de acceso a los proyectos de la cuenta A, B y C.

Procedimientos iniciales

El SDK para PHP sigue el flujo de trabajo de PHP PSR-4, utilizando el cargador automático y el espacio de nombres para cargar las clases necesarias.

Cargador automático

El cargador automático se encuentra en /aemmobilesdk/vendor/autoload.php. Puede cargar el cargador automático mediante el método siguiente, reemplazando la parte path/to en función de la ubicación del archivo PHP relativo al cargador automático:

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

Espacio de nombres

El espacio de nombres del nombre de clase seguirá la estructura dentro de /aemmobilesdk/. Por ejemplo, si el objeto de clase “Article” se encuentra en /aemmobilesdk/contentService/Article.php, el espacio de nombres será como se muestra a continuación:

use aemmobilesdk\contentService\Article

Tenga en cuenta que el espacio de nombres distingue entre mayúsculas y minúsculas en algunas versiones de PHP. Por lo tanto, lo ideal es utilizar las mismas mayúsculas y minúsculas que el nombre de la carpeta o el archivo.

Nombre de clase

Cada objeto de clase representa un componente de AEM Mobile, por lo que procesará únicamente dentro de su propio campo de experiencia. Por ejemplo, el objeto de clase “Article” solo procesará las tareas relacionadas con el artículo como, por ejemplo, cargar un archivo ZIP .article. No podrá utilizar un objeto de clase “Article” para añadir un artículo a una colección, ya que para eso se utiliza el objeto de clase “Collection”.

Configuración

Todos los objetos de clase requerirán una instancia del cliente del usuario durante la inicialización. No se debe inicializar ningún objeto de clase abstracto (tampoco se puede).

Cliente del usuario

El objeto de clase “User” representa al cliente del usuario, por lo que contendrá lo siguiente:

  • credenciales del cliente
  • ID de proyecto del cliente
  • ejecución de solicitudes de API

Para inicializar el cliente del usuario, deberá especificar el espacio de nombres (como ocurre con otros objetos de clase):

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

Las credenciales de cliente se pueden configurar en /aemmobilesdk/configuration/Credentials.php y se cargarán automáticamente o durante el tiempo de ejecución al llamar a las siguientes funciones:

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

Para generar el autentificador de acceso, puede llamar a las dos funciones siguientes, que solicitan y almacenan el autentificador de acceso en la sesión de PHP, respectivamente:

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

Para indicar un proyecto de destino, debe especificar el ID del proyecto:

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

Puede encontrar el ID en la URL del panel (es decir, https://aemmobile.adobe.com/content/index.html#/publication/68957c92-99c2-47a3-8f54-83771ba21348/content) o mediante la API. Si desea usar el último método, puede utilizar la siguiente función para obtener la lista de los proyectos asociada a este cliente del usuario:

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

Como práctica recomendada, debe comprobar que el usuario del cliente dispone de las funciones y permisos correctos antes de acceder al proyecto indicado:

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

Solicitud de API

Todas las funciones de objeto de clase generarán correctamente los encabezados y los datos de la solicitud, pero la ejecución real se encuentra en el objeto de clase “User”, tal y como se ha mencionado anteriormente. El proceso de inicialización del objeto de clase se parece al del cliente del usuario:

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

Persistencia de datos

El usuario tiene la responsabilidad de mantener la persistencia de los metadatos. Por ejemplo, imagine que tiene una colección con dos artículos y una pancarta, y desea añadir un tercer artículo a la colección. Primero debe obtener la lista de los dos artículos y la pancarta de la colección, anexar (o anteponer) el tercer artículo a la lista y, a continuación, actualizar la colección con los cuatro elementos. De lo contrario, si solo actualiza la colección con el tercer artículo, la colección solo tendrá el tercer artículo, pero los otros tres elementos se eliminarán.

Experimentación con recetas

Hemos proporcionado recetas que puede utilizar para las pruebas de concepto. Se encuentran en /recipes/. Tenga en cuenta que SDK para PHP aún está en desarrollo, por lo que le proporcionaremos actualizaciones constantemente para mejorarlo y adaptarle cualquier función nueva de AEM Mobile.

Registro de cambios

 

Actualizaciones del 1/11/2016

  • Se ha añadido compatibilidad y fórmulas para pancartas dinámicas.
  • Se ha añadido compatibilidad para cargar archivos PDF directamente al servicio de ingesta (solo artículos).

Actualizaciones del 22/2/2016

  • El directorio del SDK se actualiza de dps2015sdk al aemmobilesdk. Todos los nombres de espacios de PHP SDK actuales y futuros deben actualizarse a aemmobilesdk (concretamente, utilice aemmobilesdk\userService\User;).
  • Se ha agregado un parámetro opcional a Entity::publish() y Entity::unpublish(). Esto posibilitará la publicación masiva y las acciones que no estén publicadas. El parámetro opcional debe contener una lista matriz de entidades HREF con versiones principales.
  • Se ha agregado un parámetro opcional a Entity::getHref(). Esto permitirá el mantenimiento de la entidad HREF sin la versión principal. Se utiliza principalmente para agregar entidades a una colección, ya que es opcional proporcionar la versión principal.
  • Se ha actualizado la lógica de recipes/publication/reset.php (anteriormente como deleteAll.php). Esta receta ahora utilizará Entity::unpublish() masiva actualizada para cancelar la publicación de una lista de entidades (basadas en dependencias) en lugar de tener que cancelarlas individualmente.

Actualizaciones del 6/1/2016

  • Almacena los metadatos de entidad necesarios internos.
  • Clase de entidad tras realizar una solicitud Entity::update().
  • Se ha añadido Collection::removeEntity() para quitar una entidad específica de la lista de elementos de contenido de la colección almacenada en la clase Colección. Es preciso llamar Collection::requestContentElements() antes de utilizar esta nueva función; de lo contrario, la lista de la clase Colección estará vacía.
  • Se ha añadido una clase estática Utilidad para gestionar funciones más genéricas como generar marca de tiempo, objetos de impresión con sangría, etc.
  • En recipes/product/genIssueList.php, la fórmula descargará ahora las imágenes de miniatura (y de fondo), si están disponibles y no se han descargado aún. Se creó una fórmula diferente (véase recipes/product/downloadImage.php) para descargar únicamente las imágenes, mitigando el tiempo de carga de genIssueList.php.
  • Se ha añadido una fórmula para añadir un artículo a una colección (véase recipes/collection/addArticle.php).
  • Se ha añadido una fórmula para quitar un artículo de una colección (véase recipes/collection/removeArticle.php).
  • Se ha añadido una fórmula para publicar todas las entidades (no solo las entidades inmediatas) de una colección (véase recipes/collection/publishAllChildren.php).

Esta obra está autorizada con arreglo a la licencia de Reconocimiento-NoComercial-CompartirIgual 3.0 Unported de Creative Commons.  Los términos de Creative Commons no cubren las publicaciones en Twitter™ y Facebook.

Avisos legales   |   Política de privacidad en línea