Utilizzo di On-Demand Services API per accedere ai dettagli della raccolta e del prodotto per AEM Mobile

Requisiti

Conoscenza dei prerequisiti

Prodotti richiesti

  • Adobe AEM Mobile
  • Accesso a On-Demand Services API

Introduzione

In questo articolo verrà illustrato l'uso di AEM Mobile On-Demand Services API per recuperare informazioni sul prodotto e sulla raccolta. Queste informazioni possono essere utilizzate per fornire i dati per i server Adesione diretta per controllare l'autorizzazione ai contenuti. AEM Mobile utilizza la stessa Direct Entitlement API utilizzata da Digital Publishing Suite. Ciò significa che ogni implementazione del servizio Adesione diretta basata su Direct Entitlement API v2 è compatibile con AEM Mobile.

Configurazione del progetto

Per utilizzare On-Demand Services API per accedere ai dettagli della raccolta e del prodotto, attenetevi alla seguente procedura.

  1. Scaricate il documento On-Demand Services API e richiedete una chiave API utilizzando il modulo di richiesta disponibile all'interno del file On-Demand Services API .zip.

  2. Scaricate On-Demand Services SDK. L'SDK avrà un'implementazione di riferimento che ricreerà un DPS issueList basato su AEM Mobile.

  3. Configurate un progetto in AEM Mobile, pubblicate più raccolte e utilizzate la sezione Prodotti e iscrizioni del portale on-demand (https://aemmobile.adobe.com) per configurare più raccolte come vendita al dettaglio (disattivate “Prodotto gratuito”). Per informazioni dettagliate, consultate Acquisti in-app e iscrizioni in AEM Mobile.

  4. Create un nuovo ID Adobe. Esempio: de_user@company.com

  5. Aggiungete l'Adobe ID ‘de_user@company.com’ ai progetti che recupereranno i dati. Per tale utente, concedere unicamente autorizzazione per visualizzare informazioni sugli articoli e sulla raccolta e per visualizzare informazioni sui prodotti. Per informazioni dettagliate, consultate Amministrazione account per AEM Mobile.

  6. Generate un device_id e un device_token mediante Auth Exchange Tool. Accertatevi che gli Adobe ID utilizzati in questo processo siano quelli (3 al massimo) specificati nel modulo di richiesta della chiave API.

    Il generatore di token AEX accetta solo Adobe ID, non Enterprise o Federated ID. Pertanto, con l'SDK potete utilizzare solo Adobe ID.

  7. Modificate ‘aemmobilesdk/configuration/credentials.php’ e aggiornate la variabile in modo che rifletta la configurazione.

  8. Ottenete l'ID progetto per il vostro progetto. Potete eseguire questa operazione in due modi.

    Metodo 1: copia dell'ID progetto da Portal

    Andate alla sezione Contenuti e layout del portale on-demand. Selezionate un progetto dall'elenco a discesa nella barra di navigazione. Selezionate l'URL nel browser.

    L'ID progetto è elencato dopo il testo '/publication/'. In questo URL di esempio, l'ID progetto è in grassetto:

    https://aemmobile.adobe.com/content/index.html#/publication/bf8a2101-abe5-4a4b-a02e-f7d4f5502d3c/content

    Metodo 2: utilizzo di On-Demand Services API

    Eseguite la ricetta: recipe/authentication/getUserPermissions.php

    I seguenti percorsi nei dati della risposta JSON potrebbero contenere più ID progetto: $data['masters'][#]['publications'][#]['id'];

    Ad esempio, l'ID progetto di esempio bf8a2101-abe5-4a4b-a02e-f7d4f5502d3c si trova in $data['masters'][0]['publications'][2]['id']

Creazione della ricetta

Per generare l'elenco degli errori, sarà necessario un elenco di ID prodotto e Raccolte. Sono disponibili ricette per generare l'elenco dei problemi tramite AEM Mobile SDK:

  • Nel feed XML: `recipes/product/genIssueList.php`
  • In JSON: `recipes/product/genIssueListJson.php`

Configurazione

In questo passaggio verrà impostato l'ID progetto, richiesto il token di accesso che verrà poi archiviato (nella sessione PHP). Quest'ultimo può essere modificato per archiviarlo in un database locale. Il token di accesso è valido per 48 ore.

$currentDir = dirname(__FILE__); 
$parentDir = dirname($currentDir); 
$grandParentDir = dirname($parentDir); 
// include the AEM Mobile On-Demand Services SDK
require_once($grandParentDir . '/aemmobilesdk/vendor/autoload.php');
use aemmobilesdk\contentService\Collection; 
use aemmobilesdk\productService\Product; 
use aemmobilesdk\userService\User;
// provide the publication GUID 
$strPublicationGuid = '';
// initialize the user object 
$objPublishUser = new User(); 
// set the publication GUID $objPublishUser->setPublicationGuid($strPublicationGuid); 
// request and store the access token
$objPublishUser->requestToken()->storeToken();

Versione di database: invece di chiamare `storeToken()` alla fine dell'esempio precedente, potete utilizzare `getToken()` per ottenere il token di accesso direttamente e archiviarlo nel database. Se utilizzate questo metodo, aggiornate aemmobile\userService\Authorization::getStoredToken() con la funzionalità appropriata per il pulling del token di accesso dal database.

Procedure ottimali: archiviate sempre il token di accesso (l'impostazione predefinita è tramite la sessione PHP) e riutilizzatelo fino alla scadenza. Dopo la scadenza, l'SDK richiamerà automaticamente aemmobilesdk\authenticationService\ Authentication::requestToken().

Elenco di ID prodotto

In questo passaggio, richiederemo un elenco di ID prodotto e lo archivieremo (nella sessione PHP). Quest'ultimo può essere modificato per archiviarlo in un database locale.

Procedure ottimali: rendere questo passaggio uno script standalone. Create un processo cron per ottenere e archiviare l'elenco di ID prodotto all'interno di una cornice temporale ragionevole. Ciò dipenderà dalla frequenza con cui aggiornerete gli ID prodotto (ad esempio, 15 minuti). Consultate `recipes/product/storeProductList.php` per uno script standalone di esempio.

// initialize product object 
$objPublishProduct = new Product($objPublishUser); 
// request and store the list of product IDs WRT the account
$objPublishProduct->requestList()->storeList();

Elenco di raccolte

In questo passaggio, richiederemo un elenco di raccolte e lo archivieremo nella variabile `$arrResponseMessage`.

// initialize collection object 
$objPublishCollection = new Collection($objPublishUser); 
// get list of collections WRT the account 
$arrResponseMessage =
$objPublishCollection->requestList()->getResponse();

`$arrResponseMessage` conterrà un array di nomi di entità raccolta. Dovrete effettuare una richiesta per nome entità raccolta per ottenerne i metadati, seguita da un'altra richiesta per ottenerne lo stato di pubblicazione.

// iterate the list of collection entity names 
foreach ($arrResponseMessage as $collection) {
  // set the collection entity name
  $objPublishCollection->setIdFromHref($collection['href']);
  // get the collection metadata
  $arrCollectionData =
  $objPublishCollection->requestMetadata()->getResponse();
  // get the collection publishing status
  $bolPublishStatus =
  $objPublishCollection->requestStatus()->getPublishStatus();
}

A questo punto, potete iterare nei metadati della raccolta ed eseguire il pulling di tutti i metadati oppure solo di quelli necessari. Archiviate i dati in XML o JSON. Quest'ultimo sarebbe preferibile in quanto è più rapido.

foreach ($arrCollectionData as $strAttribute => $arrValue) {
   switch ($strAttribute) {
     case 'entityName':
       // store the entityName
       break;
     case 'department':
       // store the departments
       break;
     ... // add as many case as necessary
     default:
       // either store value as is or not at all
       break;
  }
}

Download delle immagini

Durante il passaggio precedente, nel corso dell'iterazione nei metadati della raccolta, lo script scaricherà le immagini se e solo se l'entità della raccolta dispone di un'immagine di sfondo e o di miniatura e non è già scaricato localmente nello script. L'ultima parte della condizione consente di velocizzare il tempo di caricamento.

Procedure ottimali: come per la gestione degli ID prodotto, i download delle immagini devono essere script standalone con un processo cron per scaricare le immagini più recenti entro una cornice temporale ragionevole. Consultate 'recipes/product/downloadImages.php' per un esempio di script standalone.

foreach ($arrCollectionData as $strAttribute => $arrValue) {
  switch ($strAttribute) {
    case '_links': // collection links
      foreach ($arrValue as $strInnerAttr => $arrInnerValue) {
        switch ($strInnerAttr) {
          case 'thumbnail':
          case 'background':
            // the image link is located in:
            // $strInnerValue['href']
            // i.e. contents/images/background
            // you can request the image by replacing "contents" with
            // the collection entity content URL and making a HTTP GET request
            break;
        }
      }
      break;
  }
}

Distribuzione in produzione

Per accedere a più progetti, potete assegnare lo stesso Adobe ID creato in precedenza (de_user@company.com) a qualsiasi altro progetto.

In caso di esecuzione di un server per le adesioni in hosting per più clienti, potete seguire la stessa ricetta. Chiederete ai clienti di aggiungere l'Adobe ID (de_user@company.com) ai loro progetti, in modo che il server per le adesioni in hosting sia in grado di accedere ai dati del cliente.

Se l'Adobe ID viene rimosso dal progetto o le autorizzazioni per visualizzare le informazioni sugli articoli e la raccolta e quelle sui prodotti vengono revocate, le informazioni non saranno più accessibili.

Registro delle modifiche

2016/01/06

  • Alla sezione “Creazione della ricetta” è stata aggiunta una sezione “Download delle immagini”.

Questo prodotto è concesso in licenza in base alla licenza di Attribuzione-Non commerciale-Condividi allo stesso modo 3.0 Unported di Creative Commons.  I post su Twitter™ e Facebook non sono coperti dai termini di Creative Commons.

Note legali   |   Informativa sulla privacy online