iOS/tvOS SDK API参考 iostvos-sdk-api-reference

NOTE
此页面上的内容仅供参考。 使用此API需要来自Adobe的当前许可证。 不允许未经授权使用。

简介 intro

本页介绍用于Adobe Pass身份验证的iOS/tvOS本机客户端公开的方法和回调函数。 此处介绍的方法和回调函数在AccessEnabler.hEntitlementDelegate.h头文件中定义;您可以在iOS AccessEnabler SDK中查找它们,其位置如下: [SDK directory]/AccessEnabler/headers/api/

相关文档:

  • 有关基本Adobe Pass身份验证权利流的描述,请参阅权利流
  • 有关如何实施Adobe Pass的分步说明
    使用此API的身份验证授权流,请参阅iOS集成指南
  • 有关最新的iOS AccessEnabler SDK,请参阅iOS本地Access Enabler库
NOTE
Adobe建议您仅使用Adobe Pass身份验证​ 公共 API:
  • 公共API可用,并在所有受支持的客户端类型上进行了全面测试。 对于任何公共功能,我们确保每种客户端类型都有相关方法的相应版本。
  • 公共API需要尽可能保持稳定,以支持向后兼容性并确保合作伙伴集成不会中断。 但是,对于非公共API,我们保留在未来任何时候更改其签名的权利。 如果您遇到无法通过当前公共Adobe Pass身份验证API调用组合支持的特定流程,最好的方法是告知我们。 根据您的需求,我们可以修改公共API,并在以后提供稳定的解决方案。

API参考 apis

init:softwareStatement initWithSoftwareStatement

文件: AccessEnabler/headers/AccessEnabler.h

描述: ​实例化AccessEnabler对象。 每个应用程序实例应有一个AccessEnabler实例。

API调用: iOS AccessEnabler构造函数
- (id) init:
(NSString *)softwareStatement;

可用性: v3.0+

参数:

  • softwareStatement: ​标识Adobe系统中的应用程序的字符串。 了解如何获取软件声明。

返回页首……

init - [已弃用] init

文件: AccessEnabler/headers/AccessEnabler.h

描述: ​实例化AccessEnabler对象。 每个应用程序实例应有一个AccessEnabler实例。

API调用: iOS AccessEnabler构造函数
- (id) init;

可用性: v1.0+ 截止时间: v3.0

参数: ​无

返回页首……

设置选项:选项 setOptions

文件: AccessEnabler/headers/AccessEnabler.h

描述: ​配置全局SDK选项。 它接受NSDictionary作为参数。 词典中的值将与SDK发出的每个网络调用一起传递到服务器。

注意: ​这些值将传递到服务器,这与当前流(身份验证/授权)无关。 如果要更改值,可以随时调用此方法。

API调用: setOptions
- (void) setOptions:(NSDictionary *)options;

可用性: v2.3.0+

参数:

  • options:包含全局SDK选项的NSDictionary。 目前,以下选项可用:

    • applicationProfile — 可用于根据此值生成服务器配置。

    • visitorID -Experience CloudID服务。 此值以后可用于高级分析报表。

    • handleSVC — 布尔值,指示程序员是否将处理SFSafariViewControllers。 有关详细信息,请参阅iOS SDK 3.2+🔗上的SFSafariViewController支持。

      • 如果设置为​ false,,SDK将自动向最终用户显示SFSafariViewController。 SDK将进一步导航到MVPD登录页面URL。
      • 如果设置为​ true,,则SDK将​ NOT ​自动向最终用户呈现SFSafariViewController。 SDK将进一步触发​ navigate(toUrl:{url}, useSVC:YES)
  • device_info — 客户端信息,如传递客户端信息中所述。

返回页首……

setRequestor:requestorIDsetRequestor:requestorID:serviceProviders: setReqV3

文件: AccessEnabler/headers/AccessEnabler.h

描述: ​建立程序员的身份。 在为Adobe Pass身份验证系统注册Adobe时,每个程序员都会分配一个唯一的ID。 在处理SSO和远程令牌时,当应用程序处于后台时,身份验证状态可能会更改,当应用程序进入前台时,可以再次调用setRequestor以便与系统状态同步(如果启用了SSO,则获取远程令牌,如果同时发生注销,则删除本地令牌)。

服务器响应包含MVPD列表以及附加到程序员标识的一些配置信息。 服务器响应由AccessEnabler代码在内部使用。 通过setRequestorComplete:回调只向应用程序显示操作的状态(即SUCCESS/FAIL)。

如果未使用urls参数,则生成的网络调用将定向默认服务提供程序URL:AdobeRELEASE/production environment。

如果为urls参数提供了值,则生成的网络调用将定向在urls参数中提供的所有URL。 所有配置请求都在单独的线程中同时触发。 在编译MVPD列表时,优先使用第一个响应程序。 对于列表中的每个MVPD,AccessEnabler会记住关联服务提供商的URL。 所有后续权利请求都定向到与服务提供程序相关联的URL,该URL在配置阶段与目标MVPD配对。

API调用:请求者配置
- (void) setRequestor:(NSString *)requestorID

可用性: v3.0+

API调用:请求者配置
- (void) setRequestor:(NSString *)requestorID serviceProviders:(NSArray *)urls;

可用性: v3.0+

参数:

  • requestorID:与程序员关联的唯一ID。 首次注册Adobe Pass身份验证服务时,请将Adobe分配的唯一ID传递到您的网站。
  • url:可选参数;默认情况下,使用Adobe服务提供程序(http://sp.auth.adobe.com/)。 此阵列允许您为Adobe提供的身份验证和授权服务指定端点(其他实例可能用于调试目的)。 您可以使用此选项指定多个Adobe Pass身份验证服务提供程序实例。 这样做时,MVPD列表由来自所有服务提供商的端点组成。 每个MVPD都与最快的服务提供程序相关联;即首先响应并支持该MVPD的服务提供程序。
NOTE
如果未使用serviceProviders参数调用,则库将从默认服务提供程序(即,生产配置文件的https://sp.auth.adobe.com或暂存配置文件的https://sp.auth-staging.adobe.com)中检索配置。 如果提供了serviceProviders参数,它必须是URL的数组。从所有指定的端点检索配置信息并合并。 如果不同的服务提供者响应中存在重复信息,则冲突将得到解决,以支持响应最快的服务器(即,响应时间最短的服务器优先)。

已触发​ 回调: setRequestorComplete:

返回页首……

setRequestor:setSignedRequestorId:setRequestor:setSignedRequestorId:serviceProviders: - [已弃用] setReq

文件: AccessEnabler/headers/AccessEnabler.h

描述: ​建立程序员的身份。 在为Adobe Pass身份验证系统注册Adobe时,每个程序员都会分配一个唯一的ID。 在处理SSO和远程令牌时,当应用程序处于后台时,身份验证状态可能会更改,当应用程序进入前台时,可以再次调用setRequestor以便与系统状态同步(如果启用了SSO,则获取远程令牌,如果同时发生注销,则删除本地令牌)。

服务器响应包含MVPD列表以及附加到程序员标识的一些配置信息。 服务器响应由AccessEnabler代码在内部使用。 通过setRequestorComplete:回调只向应用程序显示操作的状态(即SUCCESS/FAIL)。

如果未使用urls参数,则生成的网络调用将定向默认服务提供程序URL:AdobeRELEASE/production environment。

如果为urls参数提供了值,则生成的网络调用将定向在urls参数中提供的所有URL。 所有配置请求都在单独的线程中同时触发。 在编译MVPD列表时,优先使用第一个响应程序。 对于列表中的每个MVPD,AccessEnabler会记住关联服务提供商的URL。 所有后续权利请求都定向到与服务提供程序相关联的URL,该URL在配置阶段与目标MVPD配对。

API调用:请求者配置
- (void) setRequestor:(NSString *)requestorID
signedRequestorID:(NSString *)signedRequestorID;

可用性: v1.0+ 截止时间: v3.0

API调用:请求者配置
- (void) setRequestor:(NSString *)requestorID
signedRequestorID:(NSString *)signedRequestorID
serviceProviders:(NSArray *)urls;

可用性: v1.0+ 截止时间: v3.0

参数:

  • requestorID:与程序员关联的唯一ID。 首次向Adobe Pass身份验证服务注册时,将Adobe分配的唯一ID传递到您的网站。
  • signedRequestorID此参数存在于iOS AccessEnabler 1.2及更高版本中。 ​用您的私钥进行数字签名的请求者ID的副本。
  • url:可选参数;默认情况下,使用Adobe服务提供程序(http://sp.auth.adobe.com/)。 此阵列允许您为Adobe提供的身份验证和授权服务指定端点(其他实例可能用于调试目的)。 您可以使用此选项指定多个Adobe Pass身份验证服务提供程序实例。 这样做时,MVPD列表由来自所有服务提供商的端点组成。 每个MVPD都与最快的服务提供程序相关联;即首先响应并支持该MVPD的服务提供程序。

注意: ​如果在不使用serviceProviders参数的情况下调用,则库将从默认服务提供程序(即,https://sp.auth.adobe.com用于生产配置文件,或者https://sp.auth-staging.adobe.com用于暂存配置文件)中检索配置。 如果提供了serviceProviders参数,它必须是URL的数组。从所有指定的端点检索配置信息并合并。 如果不同的服务提供者响应中存在重复信息,则冲突将得到解决,以支持响应最快的服务器(即,响应时间最短的服务器优先)。

已触发​ 回调: setRequestorComplete:

返回页首……

setRequestor:setSignedRequestorId:secret:publicKeysetRequestor:setSignedRequestorId:serviceProviders:secret:publicKey - [已弃用] setReq_tvos

文件: AccessEnabler/headers/AccessEnabler.h

描述: ​建立程序员的身份。 在为Adobe Pass身份验证系统注册Adobe时,每个程序员都会分配一个唯一的ID。 在应用程序的生命周期中,只应执行一次此设置。

服务器响应包含MVPD列表以及附加到程序员标识的一些配置信息。 服务器响应由AccessEnabler代码在内部使用。 通过setRequestorComplete:回调只向应用程序显示操作的状态(即SUCCESS/FAIL)。

如果未使用urls参数,则生成的网络调用将定向默认服务提供程序URL:AdobeRELEASE/production environment。

如果为urls参数提供了值,则生成的网络调用将定向在urls参数中提供的所有URL。 所有配置请求都在单独的线程中同时触发。 在编译MVPD列表时,优先使用第一个响应程序。 对于列表中的每个MVPD,AccessEnabler会记住关联服务提供商的URL。 所有后续权利请求都定向到与服务提供程序相关联的URL,该URL在配置阶段与目标MVPD配对。

API调用:请求者配置
code language-none
- (void) setRequestor:(NSString *)requestorID
    signedRequestorID:(NSString *)signedRequestorID
               secret:(NSString *)secret
            publicKey:(NSString *)publicKey;

可用性: v2.0+ 截止时间: v3.0

API调用:请求者配置
code language-none
- (void) setRequestor:(NSString *)requestorID
    signedRequestorID:(NSString *)signedRequestorID
     serviceProviders:(NSArray *)urls

secret:(NSString *)secret

publicKey:(NSString *)publicKey;

可用性: v2.0+ 截止时间: v3.0

参数:

  • requestorID:与程序员关联的唯一ID。 首次将由Adobe分配的唯一ID传递到您的网站 已在Adobe Pass身份验证服务中注册。
  • signedRequestorIDiOS AccessEnabler中存在此参数 版本1.2及更高版本。 ​用您的私钥进行数字签名的请求者ID的副本。
  • url:可选参数;默认情况下,为Adobe服务提供程序 使用(http://sp.auth.adobe.com/)。 此阵列允许您为Adobe提供的身份验证和授权服务指定端点(其他实例可能用于调试目的)。 您可以使用此选项指定多个Adobe Pass身份验证服务提供程序实例。 这样做时,MVPD列表由来自所有服务提供商的端点组成。 每个MVPD都与最快的服务提供程序相关联;即首先响应并支持该MVPD的服务提供程序。
  • secret和publicKey:用于签署第二个屏幕调用的密钥和公钥。 有关详细信息,请参阅无客户端文档

如果未使用serviceProviders参数调用,则库将从默认服务提供商中检索配置(即,生产配置文件的https://sp.auth.adobe.com或暂存配置文件的https://sp.auth-staging.adobe.com)。 如果提供了serviceProviders参数,它必须是URL的数组。从所有指定的端点检索配置信息并合并。 如果不同的服务提供者响应中存在重复信息,则冲突将得到解决,以支持响应最快的服务器(即,响应时间最短的服务器优先)。

已触发​ 回调: setRequestorComplete:

返回页首……

setRequestorComplete: setReqComplete

文件: AccessEnabler/headers/EntitlementDelegate.h

描述 ​由AccessEnabler触发的回调,通知应用程序配置阶段已完成。 这是一个信号,表明应用程序可以开始发出授权请求。 在配置阶段完成之前,应用程序无法发出任何授权请求。

回调:请求者配置完成
code language-none
- (void) setRequestorComplete:(int)status;

可用性: v1.0+

参数

  • 状态:可以采用以下值之一:

    • ACCESS_ENABLER_STATUS_SUCCESS — 配置阶段已成功完成
    • ACCESS_ENABLER_STATUS_ERROR — 配置阶段失败

触发者:

setRequestor:setSignedRequestorId:, setRequestor:setSignedRequestorId:serviceProviders:

返回页首……

checkAuthentication checkAuthN

文件: AccessEnabler/headers/AccessEnabler.h

描述: ​检查当前用户的身份验证状态。
它通过在本地搜索有效的身份验证令牌来完成此操作
令牌存储空间。 此方法不执行任何网络调用,我们建议在主线程上调用它。
应用程序使用它来查询用户的身份验证状态并
相应地更新UI(即,更新登录/注销UI)。 此
身份验证状态通过以下方式通知应用程序
setAuthenticationStatus:errorCode:回调。

API调用:检查身份验证状态
code language-none
- (void) checkAuthentication;

可用性: v1.0+

参数: ​无

已触发​ 回调:
setAuthenticationStatus:errorCode:

返回页首……

getAuthenticationgetAuthentication:withData: getAuthN

文件: AccessEnabler/headers/AccessEnabler.h

描述: ​启动完整的身份验证工作流。 首先检查身份验证状态。 如果尚未经过身份验证,则身份验证流状态 — 计算机将启动:

  • 如果上次验证尝试成功,则MVPD 已跳过选择阶段,并且 已触发navigateToUrl:回调。 此 应用程序使用此回调实例化向用户显示MVPD登录页的WebView控件。 [注意:截至Access Enabler 1.5,此功能不可用,因为SDK]. ​存在限制
  • 如果上次身份验证尝试不成功,或者用户明确注销,displayProviderDialog:回调为 已触发。 您的应用程序使用此回调来显示MVPD选择UI。 此外,还需要您的应用程序通过setSelectedProvider:方法通知AccessEnabler库有关用户的MVPD选择以恢复身份验证流程。

在MVPD登录页面上验证用户的凭据时,应用程序需要监视用户在MVPD登录页面上验证时发生的多个重定向操作。 输入正确的凭据后,WebView控件将被重定向到由ADOBEPASS_REDIRECT_URL常量定义的自定义URL。 此URL不打算由WebView加载。 应用程序必须拦截此URL,并将此事件解释为登录阶段已完成的信号。 然后,它应将控制权移交给AccessEnabler以完成身份验证流程(通过调用handleExternalURL方法)。

最后,身份验证状态通过setAuthenticationStatus:errorCode:回调传递给应用程序。

API调用:启动身份验证流程
code language-none
- (void) getAuthentication;

可用性: v1.0+

API调用:启动身份验证流程
code language-none
- (void) getAuthentication:(BOOL)forceAuthn:
                  withData:(NSDictionary* )data;

可用性: v1.9+

参数:

  • forceAuthn:指定是否应启动身份验证流程的标志,无论用户是否已通过身份验证。
  • 数据:包含要发送到Pay-TV密码服务的键值对的字典。 Adobe可以使用此数据启用未来的功能,而无需更改SDK。

已触发​ 回调: setAuthenticationStatus:errorCode:displayProviderDialog:sendTrackingData:forEventType:

返回页首……

getAuthentication:filtergetAuthentication:withData:andFilter getAuthN_filter

文件: AccessEnabler/headers/AccessEnabler.h

描述: ​启动完整的身份验证工作流。 首先检查身份验证状态。 如果尚未经过身份验证,则身份验证流状态 — 计算机将启动:

  • 如果当前请求者至少有一个支持SSO的MVPD,则将调用presentTvProviderDialog()。 如果没有任何MVPD支持SSO,则将开始经典身份验证流程并忽略过滤器参数。
  • 用户完成后,将触发Apple SSO流程dismissTvProviderDialog(),身份验证过程将结束。

最后,身份验证状态通过setAuthenticationStatus:errorCode:回调传递给应用程序。

可用性: v2.4+

API调用:启动身份验证流程
code language-none
- (void) getAuthentication:(NSDictionary *)filter;
API调用:启动身份验证流程
code language-none
- (void) getAuthentication:(BOOL)forceAuthn:
                  withData:(NSDictionary* )data
                 andFilter:(NSDictionary *)filter;

参数:

  • forceAuthn:指定是否应启动身份验证流程的标志,无论用户是否已通过身份验证。

  • 数据:包含要发送到Pay-TV密码服务的键值对的字典。 Adobe可以使用此数据启用未来的功能,而无需更改SDK。

  • 过滤器:一个字典,其中包含应显示在Apple SSO对话框中的两个MVPD ID列表。 任何不支持SSO的MVPD将被忽略,但将遵守该顺序。 字典需要两把钥匙:

    • TV_PROVIDERS:包含所有应显示在选取器中的MVPD的列表
    • FEATURED_TV_PROVIDERS:包含所有应在选取器中标记为特色的MVPD的列表。 还必须在TV_PROVIDERS列表中指定此列表中的MVPD。

可用性: v2.0 - v2.3.1

API调用:启动身份验证流程
code language-none
- (void) getAuthentication:(NSArray *)filter;
API调用:启动身份验证流程
code language-none
- (void) getAuthentication:(BOOL)forceAuthn:
                  withData:(NSDictionary* )data
                 andFilter:(NSArray *)filter;

参数:

  • forceAuthn:指定是否应启动身份验证流程的标志,无论用户是否已通过身份验证。
  • 数据:包含要发送到Pay-TV密码服务的键值对的字典。 Adobe可以使用此数据启用未来的功能,而无需更改SDK。
  • 过滤器:应显示在Apple SSO对话框中的MVPD ID列表。 任何不支持SSO的MVPD将被忽略,但将遵守该顺序。

已触发​ 回调: setAuthenticationStatus:errorCode:, presentTvProviderDialog, dismissTvProviderDialog

返回页首……

displayProviderDialog: dispProvDialog

文件: AccessEnabler/headers/EntitlementDelegate.h

描述 ​由AccessEnabler触发的回调通知应用程序需要实例化适当的UI元素,以允许用户选择所需的MVPD。 回调会提供MVPD对象的列表以及其他有助于正确构建选择UI面板的信息(例如指向MVPD徽标的URL、友好显示名称等)

用户选择所需的MVPD后,需要上层应用程序通过调用setSelectedProvider:并向其传递与用户的选择相对应的MVPD的ID来恢复身份验证流程。

中止身份验证流 — 这是用户能够按下“返回”按钮的时刻,这相当于中止身份验证流。 在该方案中,应用程序需要调用setSelectedProvider:方法,并将null作为参数传递,以使AccessEnabler有机会重置其身份验证状态计算机。

回调:显示MVPD选择UI
code language-none
- (void) displayProviderDialog:(NSArray *)mvpds;

可用性: v1.0+

参数

  • mvpds:包含MVPD相关信息的MVPD对象列表,应用程序可使用该信息构建MVPD选择UI元素。

触发者: getAuthenticationgetAuthentication:withData:getAuthorization:getAuthorization:withData:

返回页首……

setSelectedProvider: setSelProv

文件: AccessEnabler/headers/AccessEnabler.h

描述: ​您的应用程序调用此方法以告知访问启用程序用户的MVPD选择。 应用程序可以使用此方法选择或更改用于身份验证的服务提供程序。

如果所选MVPD是TempPass MVPD,它随后将自动通过该MVPD进行身份验证,而无需调用getAuthentication()。

请注意,这不适用于提升临时传递,因为getAuthentication()方法提供了额外的参数。

将​ null ​作为参数传递时,Access Enabler假定用户已取消身份验证流程(即按下“返回”按钮),并通过重置身份验证状态机和使用AccessEnabler.PROVIDER_NOT_SELECTED_ERROR错误代码调用setAuthenticationStatus:errorCode:回调进行响应。

API调用:设置当前选定的提供程序
code language-none
- (void) setSelectedProvider:(NSString *)mvpdId;

可用性: v1.0+

参数: ​无

已触发​ 回调: setAuthenticationStatus:errorCode:sendTrackingData:forEventType:navigateToUrl:

返回页首……

文件: AccessEnabler/headers/EntitlementDelegate.h

描述: ​由AccessEnabler触发的回调,用于请求应用程序实例化UIWebView/WKWebView控制器并加载回调的​ url ​参数中提供的URL。 callback传递​ url ​参数,该参数表示身份验证终结点的URL或注销终结点的URL。

在UIWebView/WKWebView 控制器执行多次重定向时,您的应用程序必须监控控制器的活动,并检测其加载由ADOBEPASS_REDIRECT_URL 常量(即adobepass://ios.app)定义的特定自定义URL的时刻。 请注意,此特定自定义URL实际上无效,控制器不会将其实际加载。 必须由应用程序将其解释为验证或注销流程已完成,并且关闭控制器是安全的信号。 当控制器加载此特定自定义URL时,应用程序必须关闭UIWebView/WKWebView并调用AccessEnabler的handleExternalURL:url API方法。

注意: ​请注意,对于身份验证流程,用户可以按下“上一步”按钮,这等同于身份验证流程中止。 在这种情况下,应用程序需要调用setSelectedProvider:方法,将​ nil ​作为参数传递,并为AccessEnabler提供重置其身份验证状态计算机的机会。

“回调:显示MVPD登录”页
code language-none
- (void) navigateToUrl:(NSString *)url;

可用性: v1.0+

参数

  • url:指向MVPD登录页面的URL

触发者: setSelectedProvider:

返回页首……

文件: AccessEnabler/headers/EntitlementDelegate.h

描述: ​由AccessEnabler而不是navigateToUrl:回调触发的回调,以防您的应用程序之前通过setOptions(["handleSVC":true"])调用启用了手动Safari视图控制器(SVC)处理,并且仅适用于MVPD需要Safari视图控制器(SVC)的情况。 对于所有其他MVPD,将调用navigateToUrl:回调。 有关如何管理Safari视图控制器(SVC)的详细信息,请参阅iOS SDK 3.2+🔗上的SFSafariViewController支持。

navigateToUrl:回调类似,navigateToUrl:useSVC:由AccessEnabler触发,请求应用程序实例化SFSafariViewController控制器并加载回调的​ url ​参数中提供的URL。 callback传递表示身份验证终结点URL或注销终结点URL的​ url ​参数,以及指定应用程序必须使用SFSafariViewController的​ useSVC ​参数。

SFSafariViewController控制器执行多次重定向时,您的应用程序必须监控该控制器的活动,并检测其加载application's custom scheme定义的特定自定义URL的时间(例​ adbe.u-XFXJeTSDuJiIQs0HVRAg://adobe.com)。 请注意,此特定自定义URL实际上无效,控制器不会将其实际加载。 必须由应用程序将其解释为验证或注销流程已完成,并且关闭控制器是安全的信号。 当控制器加载此特定自定义URL时,应用程序必须关闭SFSafariViewController并调用AccessEnabler的handleExternalURL:url API方法。

注意: ​请注意,对于身份验证流程,用户可以按下“上一步”按钮,这等同于身份验证流程中止。 在这种情况下,应用程序需要调用setSelectedProvider:方法,将​ nil ​作为参数传递,并为AccessEnabler提供重置其身份验证状态计算机的机会。

回调:在SFSafariViewController中显示MVPD登录页
code language-none
@optional
​- (void) navigateToUrl:(NSString *)url useSVC:(BOOL)useSVC;

可用性: ​v 3.2+

参数

  • url: ​指向MVPD登录页面的URL
  • useSVC: ​是否应在SFSafariViewController中加载URL。

setSelectedProvider:之前的 setOptions:触发

返回页首……

handleExternalURL:url handleExternalURL

文件: AccessEnabler/headers/AccessEnabler.h

描述: ​您的应用程序调用此方法以完成身份验证或注销流程。 当应用程序检测到UIWebView/WKWebView or SFSafariViewController控制器被重定向到特定的自定义URL时,应立即调用此方法。 如果您的应用程序需要使用SFSafariViewController 控制器,则特定自定义URL由您的application's custom scheme定义(例如adbe.u-XFXJeTSDuJiIQs0HVRAg://adobe.com),否则此特定自定义URL由ADOBEPASS_REDIRECT_URL 常量(即adobepass://ios.app)定义。

在身份验证流中,AccessEnabler通过从后端服务器检索身份验证令牌并将其本地存储在令牌存储中来完成该流。 AccessEnabler将通过调用状态代码为1的setAuthenticationStatus()回调来通知您的应用程序身份验证流程已完成,表示成功。 如果在执行这些步骤的过程中出现错误,则会触发setAuthenticationStatus()回调,状态代码为0,表示身份验证失败以及相应的错误代码。

API调用:完成身份验证或注销流程
code language-none
 (void) handleExternalURL:(NSString *)url;

可用性: v3.0+

参数:

  • url:从UIWebView/WKWebView or SFSafariViewController控件截获的URL作为字符串。

已触发​ 回调: setAuthenticationStatus:errorCode, sendTrackingData:forEventType:

返回页首……

getAuthenticationToken - [已弃用] getAuthNToken

文件: AccessEnabler/headers/AccessEnabler.h

描述: ​通过从后端服务器请求身份验证令牌来完成身份验证流程。 仅当发生以下情况时,应用程序才应调用此方法:托管MVPD登录页面的WebView控件被重定向到由ADOBEPASS_REDIRECT_URL常量定义的自定义URL。

API调用:检索身份验证令牌
code language-none
- (void) getAuthenticationToken;

可用性: v1.0+ 截止时间: v3.0

参数: ​无

已触发​ 回调: setAuthenticationStatus:errorCode,sendTrackingData:forEventType:

返回页首……

</br

setAuthenticationStatus:errorCode: setAuthNStatus

文件: AccessEnabler/headers/EntitlementDelegate.h

描述 ​由AccessEnabler触发的回调,通知应用程序身份验证流的状态。 在很多地方,由于用户的交互或其他不可预见的情形(如网络连接问题等),此流量可能会失败。 此回调会通知应用程序身份验证流的成功/失败状态,同时还会在需要时提供有关失败原因的其他信息。

回调:报告身份验证流的状态
code language-none
- (void) setAuthenticationStatus:(int)status
                       errorCode:(NSString *)code;

可用性: v1.0+

参数

  • 状态:可以采用以下值之一:

    • ACCESS_ENABLER_STATUS_SUCCESS — 身份验证流程已成功完成
    • ACCESS_ENABLER_STATUS_ERROR — 身份验证流失败
  • 代码:失败原因。 如果​ 状态 ​为ACCESS_ENABLER_STATUS_SUCCESS,则​ 代码 ​为空字符串(即,由USER_AUTHENTICATED常量定义)。 如果失败,此参数可以采用以下值之一:

    • USER_NOT_AUTHENTICATED_ERROR — 用户未经过身份验证。 在本地令牌缓存中没有有效的身份验证令牌时,响应checkAuthentication:方法调用。
    • PROVIDER_NOT_SELECTED_ERROR - AccessEnabler已重置 上层应用之后的身份验证状态机 已将​ null ​传递给setSelectedProvider:以中止身份验证流程。 用户可能已取消身份验证流程(例如,已按下“后退”按钮)。
    • GENERIC_AUTHENTICATION_ERROR — 由于网络不可用或用户显式取消身份验证流等原因,身份验证流失败。

触发者: checkAuthenticationgetAuthenticationgetAuthentication:withData:checkAuthorization:checkAuthorization:withData:

返回页首……

checkPreauthorizedResources: checkPreauth

文件: AccessEnabler/headers/AccessEnabler.h

描述: ​应用程序使用此方法来确定用户是否已获得查看特定受保护资源的授权。 此方法的主要目的是检索用于装饰UI 的信息(例如,使用锁定图标和解锁图标指示访问状态)。

API调用:设置当前选定的提供程序
code language-none
- (void) checkPreauthorizedResources:(NSArray *)resources;

可用性: v1.3+

参数:

  • 资源: ​应检查其授权的资源数组。 列表中的每个元素都应该是一个表示资源ID的字符串。 此 资源ID受到与调用中的资源ID相同的限制,即,它应该是程序员和MVPD或媒体RSS片段之间建立的商定值。

已触发​ 回调: preauthorizedResources:

返回页首……

checkPreauthorizedResources:cache: checkPreauthCache

文件: AccessEnabler/headers/AccessEnabler.h

描述: ​应用程序使用此方法来确定用户是否已获得查看特定受保护资源的授权。 此方法的主要目的是检索用于装饰UI的信息(例如,使用锁定和解锁图标指示访问状态)。 cache ​参数控制内部缓存是否用于解析资源。

API调用:设置当前选定的提供程序
code language-none
- (void) checkPreauthorizedResources:(NSArray *)resources cache:(BOOL)cache;

可用性: v3.1+

参数:

  • 资源: ​应检查其授权的资源数组。 列表中的每个元素都应该是一个表示资源ID的字符串。 资源ID的限制与getAuthorization:调用中的资源ID的限制相同,即,它应该是程序员与MVPD或媒体RSS片段之间建立的商定值。
  • 缓存: ​布尔值,指定是否使用内部缓存来解析资源。 如果为false,将绕过缓存,导致每次调用此API时都进行服务器调用。

已触发​ 回调: preauthorizedResources:

返回页首……

预授权资源: preauthResources

文件: AccessEnabler/headers/EntitlementDelegate.h

描述: ​由checkPreauthorizedResources:触发的回调。 提供用户已被授权查看的资源列表。

API调用:设置当前选定的提供程序
code language-none
- (void) checkPreauthorizedResources:(NSArray *)resources;

可用性: v1.3+

参数:

  • resources:用户已被授权查看的资源数组。

触发者: checkPreauthorizedResources:

返回页首……

checkAuthorization:checkAuthorization:withData: checkAuthZ

文件: AccessEnabler/headers/AccessEnabler.h

描述: ​应用程序使用此方法来检查授权状态。 首先检查身份验证状态。 如果未经过身份验证,则触发tokenRequestFailed:errorCode:errorDescription:回调,此方法将退出。 如果用户通过了身份验证,它还会触发授权流。 查看有关getAuthorization:方法的详细信息。

API调用:检查授权状态
code language-none
- (void) checkAuthorization:(NSString *)resource;

可用性: v1.0+

API调用:检查授权状态
code language-none
- (void) checkAuthorization:(NSString *)resource:
                   withData:(NSDictionary *)data;

可用性: v1.9+

参数:

  • 资源:用户请求授权的资源的ID。
  • 数据:包含要发送到Pay-TV密码服务的键值对的字典。 Adobe可以使用此数据启用未来的功能,而无需更改SDK。

已触发​ 回调:

tokenRequestFailed:errorCode:errorDescription:setToken:forResource:sendTrackingData:forEventType:setAuthenticationStatus:errorCode:

返回页首……

getAuthorization:getAuthorization:withData: getAuthZ

文件: AccessEnabler/headers/AccessEnabler.h

描述: ​应用程序使用此方法来启动授权流。 如果用户尚未经过身份验证,它还会启动身份验证流程。 如果用户通过了身份验证,AccessEnabler将继续发出对授权令牌(如果本地令牌缓存中不存在有效的授权令牌)和短期媒体令牌的请求。 获得短媒体令牌后,授权流程即被视为完成。 触发setToken:forResource:回调,并将短媒体令牌作为参数传递给应用程序。 如果授权由于任何原因失败,则会触发tokenRequestFailed:forEventType:回调并提供错误代码/详细信息。

API调用:启动授权流
code language-none
- (void) getAuthorization:(NSString *)resource;

可用性: v1.0+

API调用:启动授权流
code language-none
- (void) getAuthorization:(NSString *)resource:
                 withData:(NSDictionary *)data;

可用性: v1.9+

参数:

  • 资源:用户请求授权的资源的ID。
  • 数据:包含要发送到Pay-TV密码服务的键值对的字典。 Adobe可以使用此数据启用未来的功能,而无需更改SDK。

已触发​ 回调: tokenRequestFailed:errorCode:errorDescription:, setToken:forResource:,sendTrackingData:forEventType:

触发的其他回调:
此方法还可以触发以下回调(如果还启动了身份验证流程): setAuthenticationStatus:errorCode:displayProviderDialog:

NOTE
请尽可能使用checkAuthorization: / checkAuthorization:withData:而不是getAuthorization: / getAuthorization:withData:getAuthorization: / getAuthorization:withData:方法将启动完整的身份验证流程(如果用户未经过身份验证),这可能会导致程序员端的复杂实施。

返回页首……

setToken:forResource: setToken

文件: AccessEnabler/headers/EntitlementDelegate.h

描述 ​由AccessEnabler触发的回调,通知应用程序授权流已成功完成。 短期媒体令牌还会作为参数提供。

回调:授权流已成功完成
code language-none
- (void) setToken:(NSString *)token
      forResource:(NSString *)resource;

可用性: v1.0+

参数

  • 令牌:短期媒体令牌
  • 资源:已获得授权的资源

触发者: checkAuthorization:checkAuthorization:withData:getAuthorization:getAuthorization:withData:

返回页首……

tokenRequestFailed:errorCode:errorDescription: tokenReqFailed

文件: AccessEnabler/headers/EntitlementDelegate.h

描述 ​由AccessEnabler触发的回调,通知上层应用程序授权流失败。

回调:授权流失败
code language-none
- (void) tokenRequestFailed:(NSString *)resource
                  errorCode:(NSString *)code
           errorDescription:(NSString *)description;

可用性: v1.0+

参数

  • 资源:已获得授权的资源。
  • 代码:与失败方案关联的错误代码。 可能的值:
    • USER_NOT_AUTHORIZED_ERROR — 用户无法授权
      指定资源的
  • description:有关失败情况的其他详细信息。 如果此描述性字符串由于任何原因不可用,则Adobe Pass身份验证发送空字符串​ (")
    MVPD可使用此字符串传递自定义错误消息或与销售相关的消息。 例如,如果订阅者被拒绝对资源的授权,则MVPD会发送消息,例如:“您当前在包中无法访问此渠道。 如果要升级包,请单击​ 此处。” 消息由Adobe Pass身份验证通过此回调传递给程序员,程序员可以选择显示或忽略该消息。 Adobe Pass身份验证还可以使用此参数来提供可能导致错误的状况通知。 例如,“与提供商的授权服务通信时出现网络错误”。

触发者: checkAuthorization:checkAuthorization:withData:getAuthorization:getAuthorization:withData:

返回页首……

注销 logout

文件: AccessEnabler/headers/AccessEnabler.h

描述: ​应用程序调用此方法以启动注销流程。 注销是一系列HTTP重定向操作的结果,这是因为用户既需要从Adobe Pass身份验证服务器注销,也需要从MVPD服务器注销。 由于此流程不能使用AccessEnabler库发出的简单HTTP请求来完成,因此需要实例化UIWebView/WKWebView or SFSafariViewController控制器才能遵循HTTP重定向操作。

注销流与身份验证流的不同之处在于,用户不需要以任何方式与UIWebView/WKWebView or SFSafariViewController控制器交互。 因此,Adobe建议您在注销过程中使控件不可见(即隐藏)。

采用类似于验证流的模式。 iOS AccessEnabler触发navigateToUrl:回调或navigateToUrl:useSVC:以创建UIWebView/WKWebView or SFSafariViewController控制器并加载回调的url参数中提供的URL。 这是后端服务器上注销端点的URL。 对于tvOS AccessEnabler,不调用navigateToUrl:回调或navigateToUrl:useSVC:回调。

在经历多次重定向时,您的应用程序必须监控UIWebView/WKWebView or SFSafariViewController 控制器的活动,并检测其加载特定自定义URL的时间。 请注意,此特定自定义URL实际上无效,控制器不会将其实际加载。 必须由应用程序将其解释为注销流程已完成并且关闭控制器是安全的信号。 当控制器加载此特定自定义URL时,应用程序必须关闭控制器并调用AccessEnabler的handleExternalURL:url API方法。 如果您的应用程序需要使用SFSafariViewController 控制器,则特定自定义URL由您的application's custom scheme定义(例如adbe.u-XFXJeTSDuJiIQs0HVRAg://adobe.com),否则此特定自定义URL由ADOBEPASS_REDIRECT_URL 常量(即adobepass://ios.app)定义。

最终,AccessEnabler将调用setAuthenticationStatus()回调,状态代码为0,表示注销流成功。

注意: ​如果用户使用Apple SSO登录,则会触发VSA203状态。 如果是这种情况,应指示用户也从系统设置注销。 如果未能这样做,则会在应用程序重新启动时导致重新身份验证。

API调用:启动注销流程
code language-none
- (void) logout;

可用性: v1.0+

参数: ​无

已触发​ 回调: navigateToUrl:setAuthenticationStatus:errorCode:

返回页首……

getselectedprovider getSelProv

文件: AccessEnabler/headers/AccessEnabler.h

描述: ​使用此方法确定当前选择的提供程序。

API调用:确定当前选定的MVPD
code language-none
- (void) getSelectedProvider;

可用性: v1.0+

参数: ​无

已触发​ 回调: selectedProvider:

返回页首……

selectedprovider selProv

文件: AccessEnabler/headers/EntitlementDelegate.h

描述 ​由AccessEnabler触发的回调,它将有关当前所选MVPD的信息提供给应用程序。

回调:有关当前所选MVPD的信息
code language-none
- (void) selectedProvider:(MVPD *)mvpd;

可用性: v1.0+

参数

  • mvpd:包含有关当前所选MVPD信息的对象

触发者: getSelectedProvider

返回页首……

getMetadata: getMeta

文件: AccessEnabler/headers/AccessEnabler.h

描述: ​使用此方法检索AccessEnabler库公开为元数据的信息。 应用程序可以通过提供基于字典的​ ​输入参数来访问此数据。

有两种类型的元数据可供程序员使用:

  • 静态元数据(身份验证令牌TTL、授权令牌TTL和设备ID)
  • 用户元数据(特定于用户的信息,例如用户ID、邮政编码;可以在身份验证和授权流期间从MVPD传递到用户设备)
API调用:查询AccessEnabler以获取元数据
code language-none
- (void) getMetadata:(NSDictionary *)keyDictionary;

可用性: v1.0+

参数:

  • keyDictionary:字典数据结构,具有以下内容
    格式:

    • 如果密钥为METADATA_OPCODE_KEY且值为METADATA_AUTHENTICATION,则进行查询以获取身份验证令牌过期时间。

    • 如果键为METADATA_OPCODE_KEY且值为METADATA_AUTHORIZATION
      键为METADATA_RESOURCE_ID_KEY且值为特定资源ID,则进行查询以获取与指定资源关联的授权令牌的过期时间。

    • 如果键为METADATA_OPCODE_KEY且值为METADATA_DEVICE_ID,则进行查询以获取当前设备ID。 请注意,此功能默认处于禁用状态,程序员应联系Adobe以获取有关启用和费用的信息。

    • 如果键为METADATA_OPCODE_KEY且值是METADATA_USER_META ​键为METADATA_USER_META_KEY且值是元数据的名称,则将对用户元数据进行查询。 可用用户元数据类型的列表:

      • zip — 邮政编码列表
      • householdID — 家庭标识符。 在MVPD不支持子帐户的情况下,这将与userID相同。
      • maxRating — 用户的最大家长分级的集合
      • userID — 用户标识符。 如果MVPD支持子帐户,并且该用户不是主帐户,则userID将不同于householdID.
      • channelID — 用户有权查看的渠道列表。
    note note
    NOTE
    程序员可用的实际用户元数据取决于MVPD提供的内容。 此列表将随着新元数据的发布和添加到Adobe Pass身份验证系统中而展开。

已触发​ 回调: setMetadataStatus:encrypted:forKey:andArguments:

更多信息: 用户元数据

返回页首……

presentTVProviderDialog presentTvDialog

文件: AccessEnabler/headers/EntitlementDelegate.h

描述 ​如果当前请求者支持至少一个支持SSO的MVPD,AccessEnabler在调用getAuthentication()后触发的回调。

回调:SSO流的结果
code language-none
- (void) presentTvProviderDialog: (UIViewController *) viewController;

可用性: v2.0+

参数

  • viewController:表示Apple SSO对话框。 此viewController需要显示在屏幕上。

触发者: getAuthentication

更多信息: iOS/tvOS单点登录

返回页首……

dissiseTVProviderDialog dismissTvDialog

文件: AccessEnabler/headers/EntitlementDelegate.h

描述 ​用户关闭Apple SSO对话框后,AccessEnabler触发的回调。

回调:SSO流的结果
code language-none
- (void) dismissTvProviderDialog: (UIViewController *) viewController;

可用性: v2.0+

参数

  • viewController:表示Apple SSO对话框。 需要从屏幕中移除此viewController。

触发者: ​用户操作

更多信息: iOS/tvOS单点登录

返回页首……

setMetadataStatus:encrypted:forKey:andArguments: setMetaStatus

文件: AccessEnabler/headers/EntitlementDelegate.h

描述 ​由AccessEnabler触发的回调,用于提供通过getMetadata:调用请求的元数据。

回调:元数据检索请求的结果
code language-none
- (void) setMetadataStatus:(id)metadata
                 encrypted:(bool)encrypted
                    forKey:(int)key
              andArguments:(NSDictionary *)arguments;

可用性: v1.0+

参数

  • 元数据:请求的元数据。 在静态元数据(身份验证TTL、授权TTL、设备ID)的情况下,此值是NSString。 请求特定于用户的元数据时,这是一个复杂的对象。 此复杂对象通常是JSON有效负载的Objective-C表示形式(例如,'{"street": "Main Avenue", "buildings": ["150", "320"]}'在Objective-C中转换为NSDictionary("street" -> "Main Avenue", "buildings" -> NSArray("150", "320")))。 示例元数据JSON对象:
        {
            updated: 1334243471,
            encrypted: ["encryptedProp"],
            data: {
                zip: ["12345", "34567"],
                maxRating: {
                    "MPAA": "PG-13",
                    "VCHIP": "TV-Y",
                    "URL": "http://exam.pl/e/manage/ratings"
                },
                householdID: "3456",
                userID: "BgSdasfsdk23/dsaf3+saASesadgfsShggssd=",
                channelID: ["channel-1", "channel-2"]
            }
  • encrypted:布尔值,指定是否对检索到的元数据加密。 此参数仅对用户元数据请求有意义,对于始终未加密接收的静态元数据(例如,身份验证TTL)没有意义。 如果此参数设置为true,则程序员需要通过使用列入白名单的私钥(与在setRequestor:setSignedRequestorId:setRequestor:setSignedRequestorId:serviceProviders: 调用中用于请求者ID签名的私钥相同)执行RSA解密来获取未加密的用户元数据值。

  • key:用于制定元数据检索请求的键。

  • 参数:传递给getMetadata:调用的同一词典。 提供此操作是为了让应用程序能够将请求与响应进行匹配。

触发者: getMetadata:

更多信息: 用户元数据

返回页首……

MVPD mvpd

文件: AccessEnabler/headers/model/MVPD.h

描述 ​描述MVPD对象。 可用于获取有关MVPD属性的信息。

可用性: v1.0+ [boardingStatus属性在v2.2]中可用

属性

  • (NSString) ID - MVPD ID。

  • (NSString) displayName - MVPD名称。 [该选项应该用于显示在选取器中]

  • (NSString) logoURL - MVPD徽标地址。

  • (BOOL) enablePlatformServices — 如果为true,则MVPD支持Apple SSO等SSO服务。

  • (NSString) boardingStatus — 可以有3个值:

    • 无 — MVPD不支持Apple SSO。
    • 选取器 — MVPD可显示在Apple选取器中,但身份验证流程由Adobe完成。
    • 支持 — Apple完全支持MVPD,它将使用Apple的SSO令牌。

返回页首……

跟踪事件 tracking

AccessEnabler会触发一个附加回调,该回调不一定与权利文件流相关。 实施sendTrackingData()回调函数是可选的,但它使应用程序能够跟踪特定事件并编译统计信息,如成功/失败的身份验证/授权尝试次数。

sendTrackingData sendTracking

文件: AccessEnabler/headers/EntitlementDelegate.h

描述 ​由AccessEnabler向应用程序发出各种事件信号(如身份验证/授权流完成/失败)触发的回调。 使用Adobe Pass Authentication 1.6时,sendTrackingData()会报告设备类型、AccessEnabler客户端类型和操作系统。 sendTrackingData()回调保持向后兼容。

回调:跟踪事件

(void) sendTrackingData:(NSArray *)data
             forEventType:(int)event;

可用性: v1.0+

注意: ​设备类型和操作系统是通过使用公共Java库(http://java.net/projects/user-agent-utils)和用户代理字符串派生的。 请注意,此信息仅以粗略的方式提供,用于按设备类别细分操作量度,但该Adobe对错误结果不承担任何责任。 请相应地使用新功能。

  • 设备类型的可能值:

    • computer
    • tablet
    • mobile
    • gameconsole
    • unknown
  • AccessEnabler客户端类型的可能值:

    • flash
    • html5
    • ios
    • android

参数

  • event:正在跟踪的事件的代码。 有三种可能的跟踪事件类型:

    • authorizationDetection: ​每次返回授权令牌请求时(事件为TRACKING_AUTHORIZATION
    • authenticationDetection: ​每次进行身份验证检查时(事件为TRACKING_AUTHENTICATION
    • mvpdSelection: ​用户在MVPD选择表单中选择MVPD时(事件为TRACKING_GET_SELECTED_PROVIDER
  • 数据:与报告事件关联的其他数据。 此数据以值列表的形式提供。

触发者: checkAuthenticationgetAuthenticationgetAuthentication:withData:checkAuthorization:checkAuthorization:withData:getAuthorization:getAuthorization:withData:setSelectedProvider:

解释​ 数据 ​数组中值的说明:

  • 对于trackingEventType TRACKING_AUTHENTICATION:

    • 0 — 令牌请求是否成功(true/false),如果成功:
    • 1 - MVPD ID字符串
    • 2 - GUID (md5散列)
    • 3 — 令牌已在缓存中(true/false)
    • 4 — 设备类型
    • 5 - AccessEnabler客户端类型
    • 6 — 操作系统类型
  • 对于trackingEventType TRACKING_AUTHORIZATION:

    • 0 — 令牌请求是否成功(true/false),如果成功:
    • 1 - MVPD ID
    • 2 - GUID (md5散列)
    • 3 — 令牌已在缓存中(true/false)
    • 4 — 错误
    • 5 — 详细信息
    • 6 — 设备类型
    • 7 - AccessEnabler客户端类型
    • 8 — 操作系统类型
  • 对于trackingEventType TRACKING_GET_SELECTED_PROVIDER:

    • 0 — 当前所选MVPD的ID
    • 1 — 设备类型
    • 2 - AccessEnabler客户端类型
    • 3 — 操作系统类型
recommendation-more-help
3f5e655c-af63-48cc-9769-2b6803cc5f4b