错误报告 error-reporting
概述 overview
Adobe Pass身份验证中的错误报告当前通过两种不同的方式实现:
-
高级错误报告 如果出现以下情况,实施者会注册错误回调 AccessEnabler JavaScript SDK 或实现名为''的接口方法
status
”如果是 AccessEnabler iOS/tvOS SDK 和 AccessEnabler Android SDK,以便接收高级错误报告。 错误分为 信息, 警告、和 错误 类型。 此报告系统是 异步,在中 无法保证触发多个错误的顺序. 有关高级错误报告系统的详细信息,请参阅 高级错误报告 部分。 -
原始错误报告 — 一种静态报告系统,当特定请求失败时,会将错误消息传递到特定回调函数。 错误分为通用、身份验证和授权类型。 有关原始系统中报告的错误列表,请参见 原始错误报告 部分。
高级错误报告 advanced-error-reporting
AccessEnabler JavaScript SDK accessenabler-javascript-sdk
新的错误报告系统是可选的,因此实施者可以显式注册错误处理程序回调以接收高级错误报告。 该系统包括动态注册和取消注册多个错误回调的能力。 此外,一旦AccessEnabler JavaScript SDK加载,您就可以注册任何新的错误回调,而无需执行任何其他初始化(在调用之前) setRequestor()
),这意味着您能够接收有关初始化和配置错误的高级报告。
实现 access-enab-js-imp
yourErrorHandler(errorData:Object)
您的错误处理程序回调函数将接收具有以下结构的单个对象(映射):
{
errorId: "CFG410",
level: "error",
message: "This a fancy message", // Optional
.
. // Optional key/value pairs
.
}
1.绑定 bind
.bind(eventType:String, handlerName:String):void
附加事件的处理程序。
eventType
— 仅''errorEvent
“ ”值导致AccessEnabler JavaScript SDK触发高级错误报表回调。
handlerName
— 一个字符串,指定错误处理程序函数的名称。
两个绑定参数必须只使用下列集合中的字符: [0-9a-zA-Z][-._a-zA-Z0-9]
;即,参数必须以数字或字母开头,然后只能包含连字符、句点、下划线和字母数字字符。 此外,参数不能超过1024个字符。
示例 绑定错误处理程序的:
accessEnabler.bind('errorEvent', 'myCustomErrorHandler');
accessEnabler.bind('errorEvent', 'errorLogger');
由于技术限制,您无法绑定关闭或匿名函数。 必须在第二个参数中指定方法的名称。
2.解除绑定 unbind
.unbind(eventType:String, handlerName:String=null):void
删除以前附加的事件处理程序。
eventType
— 仅'errorEvent
'值导致AccessEnabler JavaScript SDK触发高级错误报告回调。
handlerName
— 一个字符串,指定错误处理程序函数的名称(如果为null或缺少指定的所有附加处理程序) eventType
将被删除。
两个绑定参数必须只使用下列集合中的字符: [0-9a-zA-Z][-._a-zA-Z0-9]
;即,参数必须以数字或字母开头,然后只能包含连字符、句点、下划线和字母数字字符。 此外,参数不能超过1024个字符。
示例 删除单个错误处理程序时:
accessEnabler.unbind('errorEvent', 'errorLogger');
示例 删除所有错误处理程序:
accessEnabler.unbind('errorEvent');
AccessEnabler iOS/tvOS SDK accessenabler-ios-tvos-sdk
新的错误报告系统是强制性的,因此实施者必须明确遵守新的Objective C“EntitlementStatus”协议。 这种新方法允许程序员接收高级错误报告。
实现 accessenab-ios-tvossdk-imp
实施人员需要符合以下要求 权利状态 协议:
EntitlementStatus.h
#import <Foundation/Foundation.h>
@protocol EntitlementStatus <NSObject>
- (void)status:(NSDictionary *)statusDictionary;
@end
您的 状态 函数将接收单个对象(一个 NSDictionary
),具有以下结构:
{
errorId: "CFG410",
level: "error",
message: "This a fancy message", // Optional
.
. // Optional key/value pairs
.
}
1. 声明
@interface MyEntitlementStatusDelegate : NSObject <EntitlementStatus>
2. 实现
@implementation DemoAppAppDelegate
// very simple implementation
- (void)status:(NSDictionary *)statusDict {
NSLog(@"%@:\n%@", statusDict[@"level"], statusDict);
}
AccessEnabler Android SDK accessenabler-android-sdk
新的错误报告系统是强制性的,因为实施者必须明确遵守 IAccessEnablerDelegate
接口定义的协议。 这种新方法允许程序员接收高级错误报告。
实现 access-enablr-androidsdk-imp
实施人员需要处理新的 status
接口中的方法IAccessEnablerDelegate
. 此 status
函数将收到一个 AdvancedStatus
具有以下模型的对象:
class AdvancedStatus {
String id; // Not Null
String level; // Not Null
String message; // Might be null
String resource; // Might be null
AdvancedStatus(String id, String level, String message, String resource) {
this.id = id;
this.level = level;
this.message = message;
this.resource = resource;
}
//other private/public methods
}
示例
@Override
public void status(AdvancedStatus advancedStatus) {
String status = "status(" + advancedStatus.id + ", " + advancedStatus.level + ", " + advancedStatus.message + ", " + advancedStatus.resource + ")";
Log.i(LOG_TAG, status);
}
AccessEnabler FireOS SDK accessenabler-fireos-sdk
新的错误报告系统是强制性的,因为实施者必须明确遵守 IAccessEnablerDelegate
接口定义的协议。 这种新方法允许程序员接收高级错误报告。
实现 access-enab-fireos-sdk-
实施人员需要处理新的 status
接口中的方法IAccessEnablerDelegate
. 此 status
函数将收到一个 AdvancedStatus
具有以下模型的对象:
class AdvancedStatus {
String id; // Not Null
String level; // Not Null
String message; // Might be null
String resource; // Might be null
AdvancedStatus(String id, String level, String message, String resource) {
this.id = id;
this.level = level;
this.message = message;
this.resource = resource;
}
//other private/public methods
}
示例
@Override
public void status(AdvancedStatus advancedStatus) {
String status = "status(" + advancedStatus.id + ", " + advancedStatus.level + ", " + advancedStatus.message + ", " + advancedStatus.resource + ")";
Log.i(LOG_TAG, status);
}
高级错误代码引用 advanced-error-codes-reference
下表列出并描述了新版错误API公开的错误代码,以及更正这些代码的建议操作:
指示/提示用户在iOS/iPadOS上从“设置” — >“电视提供程序”中明确注销。
从iOS/iPadOS上的“设置” — >“电视提供商”中明确注销
— 联系Adobe以管理所用请求者ID的域白名单
- iOS:验证您使用的证书是否正确,以及是否正确创建了签名
- (可选)通知用户需要重新登录。
[https://]{SP_FQDN\}
并手动接受SSL证书,例如, https://api.auth.adobe.com 或 https://api.auth-staging.adobe.com— 将代理证书标记为受信任
采取措施防止权利流动,因为权利流动很可能会失败。
— 开发人员实施了无效的欺骗。
— 用户存在网络问题,无法访问Adobe Pass身份验证域。
-Adobe Pass身份验证服务器配置错误。
注意: 在Firefox上,将显示CFG400,而不是CFG404(浏览器限制)
— 检查网络/DNS设置。
— 通知Adobe。
— 绕过Adobe Pass身份验证。
— 通知Adobe。
— 可以选择提供常规MVPD的列表。
— 提供常规MVPD列表。
— 隐藏“临时传递”选项。
1. 浏览器已禁用(第三方)Cookie(不适用于AccessEnabler JavaScript SDK版本4.x)
2. 浏览器已启用“阻止跨站点跟踪”(Safari 11+)
3. 会话已过期
4. 程序员以不正确的顺序调用身份验证API
注意:此错误代码不适用于全页重定向身份验证流程。
2. 提示用户禁用跨站点跟踪
3. 提示用户重新进行身份验证
4. 按正确的顺序调用API
2. 禁用跨站点跟踪
3. 重新进行身份验证
4. 不适用
注意:这是原始错误系统的“一般身份验证错误”和“内部身份验证错误”。 此错误将最终淘汰。
注意:这是一个无法恢复的错误。 通知用户该应用程序不可用。
- JavaScript:检查网站应用程序中的软件语句。
使用Zendesk打开票证,并通知用户系统暂时不可用
注意:这是一个无法恢复的错误。 通知用户该应用程序不可用。
- JavaScript:检查网站应用程序中的软件语句。
使用Zendesk打开票证,并通知用户系统暂时不可用
注意:这是一个无法恢复的错误。 通知用户该应用程序不可用。
— 通知用户。
— 错误消息中的“message”键可能包含由MVPD提供的更详细的消息。
— 通知用户。
— 通知用户MVPD遇到了困难,他们应稍后重试。
注意:这是旧版“一般身份验证错误”和“内部身份验证错误”。 此错误将最终淘汰。
— 联系Adobe Pass身份验证支持部门以查找/设置允许的最大资源数。
身份验证/授权不会持续存在于当前页面之外! 每次页面加载都会导致用户需要身份验证。 重新加载页面时不会强制执行配置的TTL。
— 告知用户如何增加可用存储空间。
— 或者注销以清除存储。
— 注销以清除存储。
原始错误报告 original-error-reporting
本节介绍原始错误报告系统以及原始错误代码。 在原始错误报告系统中,AccessEnabler将错误传递到这两个回调函数: setAuthenticationStatus()
在调用之后 checkAuthentication()
; tokenRequestFailed()
,在对的调用失败后 checkAuthorization()
或 getAuthorization()
.
原始错误报告和状态API将继续与之前完全一样工作。 但是,以后将不更新原始错误报告API。 所有新的错误报告和旧错误的更新将仅在新版本中反映 高级错误报告系统.
有关使用原始错误报告系统的示例,请参见 JavaScript API参考:setAuthenticationStatus() 和 tokenRequestFailed() 函数, iOS/tvOS API参考: setAuthenticationStatus()和 tokentRequestFailed(), Android API参考: setAuthenticationStatus() 和 tokenRequestFailed().