Vereisten

Vereiste kennis

  • Kennis van AEM Mobile
  • Kennis van het maken en publiceren van inhoud via de standaard on-demandportal
  • Ervaring met de On-Demand Services API

Vereiste producten

  • AEM Mobile
  • API-sleutel
  • Toegang tot de On-Demand Services API

 

Inleiding

De Experience Manager Mobile On-Demand Services SDK voor PHP is een bibliotheek waarmee externe ontwikkelaars eenvoudig integratie met de On-Demand Services API (voorheen de “Content Producer Service API”) kunnen uitvoeren.

De SDK helpt PHP-ontwikkelaars door verschillende taken te verzorgen, zoals beste werkwijzen en storingsbeveiliging, en kleine maar belangrijke richtlijnen door te voeren zoals het instellen van de juiste headers per API-verzoek.

De On-Demand Services SDK voor PHP downloaden

Opmerking:

Door de onderstaande software te downloaden, geef ik aan dat de voorwaarden van de API's voor Experience Manager Mobile Services-licentie, de gebruiksvoorwaarden voor Adobe.com en het onlineprivacybeleid van Adobe heb gelezen en dat ik hiermee akkoord ga.

Downloaden

Zie het wijzigingenlogboek aan het einde van dit document voor een lijst met recente wijzigingen.

Kennis van de concepten

Voor de On-Demand Services API is geautoriseerde toegang vereist. Het is daarom belangrijk dat u deze sectie begrijpt en voltooit voordat u doorgaat.

Verificatie

Voor elk clientverzoek (HTTPS) dat met behulp van de On-Demand Services API is gemaakt, moet u de volgende informatie in de headers van het verzoek opgeven:

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

De API-sleutel geeft de client toegang tot de On-Demand Services API, terwijl met de toegangstoken het clientaccount wordt geïdentificeerd.

Raadpleeg de documentatie van de On-Demand Services API om een API-sleutel aan te vragen, download het aanvraagformulier en vul dit in zoals beschreven in de documentatie.

Na ontvangst van de API-sleutel kunt u een toegangstoken genereren. U kunt de toegangstoken als volgt genereren:

  1. Ga naar de AEX Device Token Generator.
  2. Voer een geldige client-id in.
  3. Meld u aan met een geldige Adobe ID.
  4. Als dit is gelukt, worden een apparaat-id en apparaattoken gegenereerd.
  5. Dien een API-aanvraag in met de client-id, apparaat-id en apparaattoken om de toegangstoken te maken.

Opmerkingen over verificatie:

  • De toegangstoken verloopt binnen 24 uur.
  • De apparaat-id en apparaattoken worden automatisch vernieuwd zolang u deze gebruikt. De client kan de apparaat-id en token gebruiken om indien nodig nieuwe toegangstokens te maken.
  • De apparaat-id en het apparaattoken worden ongeldig als het wachtwoord voor het account dat is gebruikt om deze te genereren, wordt bijgewerkt. Als dat gebeurt, moet u een nieuwe set van apparaat-id's en apparaattokens genereren.

 

Autorisatie

Tijdens het aanvraagproces voor een API-sleutel kunt u maximaal drie Adobe ID's aanvragen waaraan toegang tot de AEX Device Token Generator wordt verleend. Dat betekent dat u alleen toegang kunt krijgen tot projecten met maximaal drie Adobe ID's. Maar met onze nieuwe functie Rollen en machtigingen kunt u de Adobe ID aan een willekeurig aantal projecten toevoegen.

Als u bijvoorbeeld projecten hebt op account A, B en C, kunt u account A aan projecten in account B en C toevoegen. Op deze manier hoeft u alleen maar een apparaat-id en apparaattoken voor account A te genereren. Deze hebben vervolgens toegang tot projecten in account A, B en C.

Aan de slag

De SDK voor PHP volgt de PHP PSR-4-workflow en gebruikt de automatische laadfunctie en naamruimte voor het laden van de benodigde klassen.

Automatische laadfunctie

U vindt de automatische laadfunctie in /aemmobilesdk/vendor/autoload.php. U kunt de automatische laadfunctie op de volgende manier laden. Vervang hierbij het gedeelte path/to door de locatie van het PHP-bestand dat bij de automatische laadfunctie hoort:

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

Naamruimte

De naamruimte naar de klassenaam volgt de mappenstructuur in /aemmobilesdk/. Als het klasseobject “Article” zich bijvoorbeeld in /aemmobilesdk/contentService/Article.php bevindt, is de naamruimte als volgt:

use aemmobilesdk\contentService\Article

Let op: de naamruimte is in sommige versies van PHP hoofdlettergevoelig; u kunt het beste de exacte hoofdletters van de map-/bestandsnaam gebruiken.

Klassenaam

Elk klasseobject staat voor een onderdeel in AEM Mobile en werkt alleen binnen het eigen vakgebied. Het klasseobject “Article” verwerkt bijvoorbeeld alleen taken die bij artikelen horen, zoals het uploaden van een .article-zipbestand. U kunt het klasseobject “Article” niet gebruiken om een artikel aan een collectie toe te voegen; daar gebruikt u het klasseobject “Collection” voor.

Instellen

Alle klasseobjecten hebben een instantie van de gebruikersclient nodig tijdens de initialisatie. Alle abstracte klasseobjecten mogen niet worden geïnitialiseerd (maar dat kan ook niet).

Gebruikersclient

Het klasseobject “User” staat voor de gebruikersclient en bevat het volgende:

  • Clientreferenties
  • De id van het clientproject
  • Uitvoering van API-aanvraag

Als u de gebruikersclient wilt initialiseren, moet u de naamruimte opgeven (net zoals met andere klasseobjecten):

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

U kunt de clientreferenties instellen in /aemmobilesdk/configuration/Credentials.php. Deze worden automatisch geladen of tijdens de uitvoering ingeschakeld door de volgende functie op te roepen:

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

Als u de toegangstoken wilt genereren, kunt u de volgende twee functies aanroepen om respectievelijk de toegangstoken in de PHP-sessie aan te vragen en op te slaan:

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

Als u zich op een project wilt richten, moet u de project-id opgeven:

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

U vindt de project-id via de URL in het dashboard (i.e. https://aemmobile.adobe.com/content/index.html#/publication/68957c92-99c2-47a3-8f54-83771ba21348/content) of via de API. Als u de tweede methode wilt toepassen, kunt u de volgende functie gebruiken om een lijst met projecten weer te geven die aan deze gebruikersclient zijn gekoppeld:

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

Het wordt aanbevolen om te controleren of de clientgebruiker over de juiste rollen en machtigingen beschikt voordat u het opgegeven project gaat openen:

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

API-verzoek

Elke klasseobjectfunctie genereert de goede verzoekheaders en gegevens, maar de daadwerkelijke uitvoering ligt in het klasseobject “User”, zoals eerder is gemeld. Het initialiseren van het klasseobject verloopt op vergelijkbare wijze als de initialisatie van de gebruikersclient:

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

Behoud van gegevens

De gebruiker moet ervoor zorgen dat de metagegevens behouden blijven. Er bestaat bijvoorbeeld een collectie met twee artikelen en een banner, en u wilt een derde artikel aan de collectie toevoegen. U moet eerst de lijst met de bestaande twee artikelen en de banner in deze collectie verkrijgen, het derde artikel vooraan of achteraan in de lijst plaatsen en vervolgens de collectie met alle vier items bijwerken. Als u alleen de collectie met het derde artikel bijwerkt, bevat de collectie nu alleen het derde artikel en worden de andere drie verwijderd.

Experimenteren met werkwijzen

We hebben werkwijzen ontwikkeld die u kunt gebruiken voor demonstraties. Deze bevinden zich in /recipes/. Houd er rekening mee dat de SDK voor PHP nog in ontwikkeling is. We leveren doorlopend updates om de SDK voor PHP te verbeteren en af te stemmen op nieuwe functies in AEM Mobile.

Wijzigingenlogboek

 

Updates 01-11-2016

  • Ondersteuning en werkwijzen voor dynamische banner toegevoegd
  • Ondersteuning toegevoegd voor rechtstreeks uploaden van PDF's naar de Ingestion Service (alleen artikel).

Updates 22-02-2016

  • De SDK-map wordt bijgewerkt van dps2015sdk naar aemmobilesdk. Alle bestaande en toekomstige PHP SDK-naamruimten moeten worden bijgewerkt naar aemmobilesdk (gebruik specifiek aemmobilesdk\userService\User;).
  • Er is een optionele parameter toegevoegd aan Entity::publish() en Entity::unpublish(). Hierdoor kan in bulk worden gepubliceerd en kunnen bulkpublicaties ongedaan worden gemaakt. De optionele parameter moet een arraylijst met entiteit-HREF met hoofdversies bevatten.
  • Er is een optionele parameter toegevoegd aan Entity::getHref(). Hierdoor kan entiteit HREF zonder de hoofdversie worden geselecteerd. Voornamelijk gebruikt voor het toevoegen van entiteiten aan een collectie, aangezien het optioneel is om de hoofdversie op te geven.
  • De logica in recipes/publication/reset.php (voorheen deleteAll.php) is bijgewerkt. Dit recept gebruikt nu de bijgewerkte bulk Entity::unpublish() om de publicatie van een lijst met entiteiten (op basis van afhankelijkheden) ongedaan te maken, in plaats van de publicatie van elke identiteit afzonderlijk ongedaan te maken.

Updates 06-01-2016

  • Slaat de benodigde interne metagegevens voor de entiteit op naar.
  • Entiteitsklasse na het maken van een aanvraag voor Entity::update().
  • Added Collection::removeEntity() om een specifieke entiteit uit de lijst met elementen van de collectie-inhoud te verwijderen die is opgeslagen in de collectieklasse. Moet Collection::requestContentElements() aanroepen voordat deze nieuwe functie kan worden gebruikt; anders is de lijst binnen de collectieklasse leeg.
  • Een statische klasse voor hulpmiddelen om meer algemene functie af te handelen, zoals een tijdstempel, mooi-afdrukobjecten, enzovoorts genereren.
  • In recipes/product/genIssueList.php downloadt de werkwijze nu de miniatuurafbeeldingen (en achtergrondafbeeldingen), indien beschikbaar en nog niet gedownload. Een afzonderlijke werkwijze (zie recipes/product/downloadImage.php) is gemaakt om alleen de afbeeldingen te downloaden, waardoor de laadtijd van genIssueList.php wordt verminderd.
  • Een werkwijze toegevoegd om een artikel toe te voegen aan een collectie (zie recipes/collection/addArticle.php).
  • Een werkwijze toegevoegd om een artikel uit een collectie te verwijderen (zie recipes/collection/removeArticle.php).
  • Een werkwijze toegevoegd om alle entiteiten (niet alleen de onmiddellijke entiteiten) van een collectie te publiceren (zie recipes/collection/publishAllChildren.php).

Dit werk is gelicentieerd onder de Creative Commons Naamsvermelding/Niet-commercieel/Gelijk delen 3.0 Unported-licentie  De voorwaarden van Creative Commons zijn niet van toepassing op Twitter™- en Facebook-berichten.

Juridische kennisgevingen   |   Online privacybeleid