Anforderungen

Grundlagen

  • Grundlagen von AEM Mobile
  • Kenntnisse im Erstellen und Veröffentlichen von Inhalten über das On-Demand-Standardportal
  • Erfahrung mit der On-Demand Services API

Erforderliche Produkte

  • AEM Mobile
  • API-Schlüssel
  • Zugriff auf die On-Demand Services API

 

Einführung

Das Experience Manager Mobile On-Demand Services SDK für PHP ist eine Bibliothek, die Entwicklern von Drittanbieteranwendungen die einfache Integration mit der On-Demand Services API (früher „Content Producer Service API“) ermöglicht.

Das SDK unterstützt PHP-Entwickler bei verschiedenen Standardaufgaben, beispielsweise durch bewährte Verfahren, Ausfallsicherheit bei Fehlern und kleinere, aber nicht weniger wichtige Richtlinien, z. B. zur Einstellung der richtigen Header bei API-Anfragen.

On-Demand Services SDK für PHP herunterladen

Hinweis:

Durch Herunterladen der unten aufgeführten Software bestätigen Sie, dass Sie die Nutzungsbedingungen der Lizenz für Experience Manager Mobile Services APIs, die allgemeinen Nutzungsbedingungen von Adobe und die Online-Datenschutzrichtlinien von Adobe gelesen haben und diesen zustimmen.

Herunterladen

Eine Liste der aktuellen Änderungen finden Sie im Änderungsprotokoll am Ende dieses Dokuments.

Grundbegriffe

Für die On-Demand Services API ist ein autorisierter Zugriff erforderlich. Die Informationen in diesem Abschnitt sind daher Voraussetzung für alle weiteren Schritte.

Authentifizierung

Jede Clientanfrage (HTTPS), die mit der On-Demand Services API ausgeführt wird, muss die folgenden Angaben im Anforderungs-Header enthalten:

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

Mittels des API-Schlüssels erhält der Client Zugriff auf die On-Demand Services API. Das Zugriffstoken („access_token“) dient der Identifikation des Clientkontos.

Wenn Sie einen API-Schlüssel anfordern möchten, lesen Sie die Dokumentation zur On-Demand Services API, laden Sie das Anforderungsformular herunter und füllen Sie es wie in der Dokumentation beschrieben aus.

Nachdem Sie den API-Schlüssel erhalten haben, können Sie ein Zugriffstoken generieren. Führen Sie, um das Zugriffstoken zu generieren, die folgenden Schritte aus:

  1. Rufen Sie den AEX Device Token Generator auf.
  2. Geben Sie eine gültige Client-ID („client_id“) ein.
  3. Melden Sie sich mit einer gültigen Adobe ID an.
  4. Bei Erfolg werden eine Geräte-ID („device_id“) und ein Gerätetoken („device_token“) generiert.
  5. Führen Sie eine API-Anfrage mittels der Client-ID, der Geräte-ID und des Gerätetokens aus, um das Zugriffstoken zu generieren.

Hinweise zur Authentifizierung:

  • Das Zugriffstoken läuft innerhalb von 24 Stunden ab.
  • Die Geräte-ID und das Gerätetoken erneuern sich bei stetiger Verwendung automatisch. Der Client kann mithilfe der Geräte-ID und des Gerätetokens bei Bedarf neue Zugriffstokens generieren.
  • Die Geräte-ID und das Gerätetoken werden ungültig, wenn das Kennwort für das Konto, mit dem sie generiert wurden, aktualisiert wird. Wenn dies der Fall ist, erstellen Sie einen neuen Satz aus Geräte-IDs und Gerätetoken.

 

Autorisierung

Im Zuge der Anforderung des API-Schlüssels können Sie bis zu drei Adobe IDs anfordern, mit denen Sie Zugriff auf den AEX Device Token Generator haben. Sie können also mit höchstens drei Adobe IDs auf Projekte zugreifen. Mit den neuen Rollen und Berechtigungen lässt sich die Adobe ID allerdings einer beliebigen Anzahl an Projekten hinzufügen.

Beispiel: Sie verfügen über Projekte in den Konten A, B und C. Konto A kann Projekten in Konto B und C hinzugefügt werden. Daher müssen nur die Geräte-ID und das Gerätetoken für Konto A generiert werden. Konto A hat Zugriff auf Projekte in den Konten A, B und C.

Erste Schritte

Das SDK für PHP befolgt den Arbeitsablauf von PHP PSR-4 und verwendet einen Autoloader sowie einen Namespace, um die erforderlichen Klassen zu laden.

Autoloader

Der Speicherort des Autoloaders ist /aemmobilesdk/vendor/autoload.php. Der Autoloader kann mithilfe der folgenden Methode geladen werden, wobei der „path/to“-Abschnitt abhängig vom Speicherort der PHP-Datei relativ zum Autoloader ersetzt wird:

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

Namespace

Der Namespace zum Klassennamen folgt der Ordnerstruktur unter /aemmobilesdk/. Beispielsweise befindet sich das Klassenobjekt „Article“ unter /aemmobilesdk/contentService/Article.php und der entsprechende Namespace lautet wie folgt:

use aemmobilesdk\contentService\Article

Hinweis: Bei einigen PHP-Versionen wird beim Namespace die Groß-/Kleinschreibung beachtet. Es empfiehlt sich daher, zur Angabe des Ordner-/Dateinamens die exakte Schreibweise zu verwenden.

Klassenname

Jedes Klassenobjekt entspricht einer Komponente in AEM Mobile und ist nur für Funktionen innerhalb des entsprechenden Bereichs geeignet. Beispiel: Mit dem Klassenobjekt „Article“ können ausschließlich mit Artikeln in Verbindung stehende Aufgaben ausgeführt werden, wie das Hochladen einer „.article“-ZIP-Datei. Das Klassenobjekt „Article“ kann hingegen nicht verwendet werden, um einen Artikel zu einer Sammlung hinzuzufügen. Diese Aufgabe wird mit dem Klassenobjekt “Collection” ausgeführt.

Einrichten

Alle Klassenobjekte erfordern zur Initialisierung eine Instanz des Benutzerclients. Abstrakte Klassenobjekte sollen und können nicht initialisiert werden.

Benutzerclient

Das Klassenobjekt „User“ repräsentiert den Benutzerclient und umfasst das Folgende:

  • Clientberechtigungen
  • Clientprojekt-ID
  • API-Anfragenausführung

Um den Benutzerclient zu initialisieren, ist es nötig, den Namespace anzugeben (wie bei anderen Klassenobjekten):

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

Die Clientberechtigungen können in „/aemmobilesdk/configuration/Credentials.php“ eingestellt werden. Sie werden entweder automatisch oder durch Aufruf der folgenden Funktionen während der Laufzeit geladen:

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

Das Zugriffstoken kann durch Aufruf der beiden folgenden Funktionen generiert werden, mittels derer das Zugriffstoken abgefragt und in der PHP-Sitzung gespeichert wird:

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

Um ein Projekt als Ziel festzulegen, muss die Projekt-ID angegeben werden:

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

Die Projekt-ID kann entweder über die URL im Dashboard (i.e. https://aemmobile.adobe.com/content/index.html#/publication/68957c92-99c2-47a3-8f54-83771ba21348/content) oder mithilfe der API angegeben werden. Bei Verwendung der API können Sie mittels der folgenden Funktion eine Liste der Projekte abrufen, die mit dem Benutzerclient in Verbindung stehen:

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

Als bewährtes Verfahren hat sich erwiesen, vor dem Zugriff auf das entsprechende Projekt sicherzustellen, dass der Benutzerclient über die notwendigen Rollen und Berechtigungen verfügt:

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

API-Anfrage

Die Funktionen jedes Klassenobjekts generieren Anfrage-Header und -daten erwartungsgemäß. Die eigentliche Ausführung findet wie erwähnt allerdings im Klassenobjekt „User“ statt. Der Initialisierungsprozess des Klassenobjekts ähnelt demjenigen des Benutzerclients:

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

Datenpersistenz

Für die Konsistenz der Metadaten ist der Benutzer verantwortlich. Beispiel: Eine Sammlung umfasst zwei Artikel und ein Banner. Nun möchten Sie der Sammlung einen dritten Artikel hinzufügen. Zunächst muss eine Liste mit den beiden bestehenden Artikeln und dem Banner in der Sammlung abgerufen werden. Dann muss dieser Liste der dritte Artikel angehängt (oder vorangestellt) werden. Schließlich muss die Sammlung mit allen vier Elementen aktualisiert werden. Würden Sie die Sammlung nur mit dem dritten Artikel aktualisieren, würde sie nur noch den dritten Artikel umfassen. Die drei anderen Elemente würden entfernt werden.

Mit Skripts experimentieren

Verwenden Sie die bereitgestellten Skripts für Proof of Concepts. Sie finden diese Skripts unter /recipes/. Beachten Sie, dass das SDK für PHP sich noch in der Entwicklung befindet. Das SDK für PHP wird durch regelmäßige Updates stets verbessert und alle neuen Funktionen werden in AEM Mobile bereitgestellt.

Änderungsprotokoll

 

Aktualisierungen vom 01.11.2016

  • Unterstützung und Skripts für dynamische Banner hinzugefügt
  • Unterstützung für das Hochladen von PDF-Dateien direkt in Ingestion Service (nur Artikel) hinzugefügt

Aktualisierungen vom 22.02.2016

  • Das SDK-Verzeichnis wird von „dps2015sdk“ auf „aemmobilesdk“ aktualisiert. Alle vorhandenen und zukünftigen PHP SDK-Namespaces sollten auf „aemmobilesdk“ aktualisiert werden (verwenden Sie „aemmobilesdk\userService\User;“).
  • Es wurde ein optionaler Parameter zu „Entity::publish()“ und „Entity::unpublish()“ hinzugefügt. Hiermit werden Massenaktionen für Veröffentlichen und Aufheben der Veröffentlichung ermöglicht. Der optionale Parameter sollte eine Arrayliste der Entitäts-HREF mit Head-Versionen enthalten.
  • Es wurde ein optionaler Parameter für „Entity::getHref()“ hinzugefügt. Dieser ermöglicht das Auswählen der Entitäts-HREF ohne Head-Version. Wird hauptsächlich zum Hinzufügen von Entitäten zu einer Sammlung verwendet, da das Angeben der Head-Version optional ist.
  • Die Logik unter „recipes/publication/reset.php“ wurde aktualisiert (früher „deleteAll.php“). In diesem Skript wird jetzt mit der aktualisierten Massenoption „Entity::unpublish()“ die Veröffentlichung einer Liste von Entitäten (auf Grundlage von Abhängigkeiten) aufgehoben und die Veröffentlichung nicht mehr einzeln rückgängig gemacht.

Aktualisierungen vom 06.01.2016

  • Speichert die erforderlichen Entitätsmetadaten, die für die
  • Entitätsklasse intern sind, nachdem eine Entity::update()-Anforderung erfolgt ist.
  • Collection::removeEntity() wurde hinzugefügt, um eine bestimmte Entität aus der in der Collection-Klasse gespeicherten Liste der Sammlungsinhaltselemente zu entfernen. Collection::requestContentElements() muss vor der Verwendung dieser neuen Funktion aufgerufen werden. Andernfalls ist die Liste in der Collection-Klasse leer.
  • Die statische Utility-Klasse wurde hinzugefügt, um allgemeine Funktionen zu behandeln, z. B. das Generieren eines Zeitstempels, Pretty-Print-Objekte usw.
  • In recipes/product/genIssueList.php lädt das Skript jetzt das Miniaturbild (und Hintergrundbilder) herunter, falls dieses verfügbar ist und noch nicht heruntergeladen wurde. Ein anderes Skript (siehe recipes/product/downloadImage.php) wurde erstellt, um nur die Bilder herunterzuladen, wodurch die Ladedauer für genIssueList.php verkürzt wird.
  • Es wurde ein Skript zum Hinzufügen eines Artikels zu einer Sammlung hinzugefügt (siehe recipes/collection/addArticle.php).
  • Es wurde ein Skript zum Entfernen eines Artikels aus einer Sammlung hinzugefügt (siehe recipes/collection/removeArticle.php).
  • Es wurde ein Skript zum Veröffentlichen aller (nicht nur der direkten) Entitäten einer Sammlung hinzugefügt (siehe recipes/collection/publishAllChildren.php).

Dieses Werk unterliegt den Bedingungen der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.  Twitter™- und Facebook-Beiträge fallen nicht unter die Bedingungen der Creative Commons-Lizenz.

Rechtliche Hinweise   |   Online-Datenschutzrichtlinie