要求

必备知识

  • 了解 AEM Mobile
  • 有关通过标准点播门户创建和发布内容的知识
  • 使用 On-Demand Services API 的经验

必要的产品

  • AEM Mobile
  • API 密钥
  • 访问 On-Demand Services API

 

简介

适用于 PHP 的 Experience Manager Mobile 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 Online 隐私政策

下载

有关最新更改的列表,请参阅本文档末尾的更改日志。

了解概念

On-Demand Services API 将需要授权访问;因此,在继续之前,请务必了解并完成本部分。

身份验证

对于使用 On-Demand Services API 发出的每个客户端 (HTTPS) 请求,您必须在请求标头中提供以下内容:

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

API 密钥将授予对 On-Demand Services API 的客户端访问权限,而访问令牌将标识客户端帐户。

要请求 API 密钥,请查看 On-Demand Services API 文档,然后下载并填写文档中所述的请求表。

在收到 API 密钥后,您可以生成访问令牌。要生成访问令牌,请执行以下操作:

  1. 转到 AEX Device Token Generator
  2. 输入有效的客户端 ID。
  3. 使用有效的 Adobe ID 进行登录。
  4. 如果成功,将生成设备 ID 和设备令牌。
  5. 使用客户端 ID、设备 ID 和设备令牌发出 API 请求以生成访问令牌。

身份验证说明:

  • 访问令牌将在 24 小时后过期。
  • 只要使用设备 ID 和设备令牌,它们就会自动更新。客户端可在需要时使用设备 ID 和令牌生成新的访问令牌。
  • 如果用于生成设备 ID 和设备令牌的帐户的密码更新,设备 ID 和设备令牌将无效。如果发生这种情况,请生成新的设备 ID 和设备令牌。

 

授权

在 API 密钥请求过程中,您可以请求多达三个 Adobe ID,这些 ID 将获得对 AEX Device Token Generator 的访问权限。这意味着您只能获取对最多三个 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 文件相对于自动加载器的位置替换 path/to 部分:

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

命名空间

类名称的命名空间将采用 /aemmobilesdk/ 中的文件夹结构。例如,“Article”类对象位于/aemmobilesdk/contentService/Article.php 中,命名空间为如下所示:

use aemmobilesdk\contentService\Article

请注意,命名空间在某些版本的 PHP 中区分大小写;最好使用与文件夹/文件名称完全相同的大小写。

类名

每个类对象在 AEM Mobile 中表示一个组件,并且只会在自己的专业领域内进行处理。例如,“Article”类对象只会处理与文章相关的任务,如上传 .article 压缩文件。您无法使用“Article”类对象将文章添加到集合,那属于“Collection”类对象的用途。

设置

所有类对象在初始化期间都需要用户客户端的实例。所有抽象对象都不应进行初始化(也无法这样做)。

用户客户端

“User”类对象表示用户客户端,它将包含以下内容:

  • 客户端凭据
  • 客户端项目 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 请求

每个类对象函数将正确生成请求标头和数据,但实际执行位于“User”类对象中,如前面所述。初始化类对象与初始化用户客户端的过程类似:

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

数据持久性

用户负责保持元数据的持久性。例如,有一个包含两篇文章和一条横幅的集合,您想要将第三篇文章添加到该集合。您必须先获取此集合中现有的两篇文章和一条横幅的列表,将第三篇文章追加到列表中,然后用所有四个项目来更新集合。否则,如果您仅用第三篇文章来更新集合,则集合现在将仅包含第三篇文章,另外三个项目将被删除。

用菜谱来试验

我们已经提供了可用于概念验证的菜谱。这些菜谱位于 /recipes/ 中。请注意,适用于 PHP 的 SDK 仍处于开发阶段,我们将持续提供更新来改进适用于 PHP 的 SDK 并适合 AEM Mobile 中的任何新增功能。

更改日志

 

2016/11/01 更新

  • 增加了针对动态横幅的支持和方法。
  • 增加了将 PDF 直接上传到 Ingestion Service 的支持(仅限文章)。

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 类中存储的集合内容元素列表中删除特定实体。在使用这个新函数之前将需要调用 Collection::requestContentElements();否则,Collection 类中的列表将为空。
  • 添加了一个 Utility 静态类,用以处理更多通用函数,如生成时间戳、美化打印对象等。
  • 在 recipes/product/genIssueList.php 中,菜谱现在将下载缩览图(和背景)图像(如果有但尚未下载)。创建了一个单独的菜谱(请参阅 recipes/product/downloadImage.php),用以仅下载图像,从而减少 genIssueList.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 的条款约束之下。

法律声明   |   在线隐私策略