(旧版)错误报告 error-reporting
概述 overview
Adobe Pass身份验证中的错误报告当前通过两种不同的方式实现:
-
高级错误报告为接收高级错误报告,实施者在AccessEnabler JavaScript SDK中注册错误回调,或者在
statusAccessEnabler 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 协议:
EntitlementStatus.h
#import <Foundation/Foundation.h>
@protocol EntitlementStatus <NSObject>
- (void)status:(NSDictionary *)statusDictionary;
@end
您的 status 函数将接收具有以下结构的单个对象(一个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上的“设置” — >“电视提供商”中明确注销
中加载AccessEnabler
— 联系Adobe以管理所使用Requestor 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()。