Informes de errores error-reporting
Información general overview
Los informes de errores en la autenticación de Adobe Pass se implementan actualmente de dos formas diferentes:
-
Informes de errores avanzados El implementador registra una llamada de retorno de error en el caso del SDK de JavaScript AccessEnabler o implementa un método de interfaz denominado "
status
" en el caso del SDK de iOS/tvOS AccessEnabler y el SDK de Android AccessEnabler, para recibir informes de errores avanzados. Los errores se clasifican en Información, Advertencia y Errores. Este sistema de informes es asincrónico, en el sentido de que no hay garantía del orden en que se desencadenarán varios errores. Para obtener más información sobre el sistema de informes de errores avanzado, consulte la sección Informes de errores avanzados. -
Informe de errores original - Un sistema de informes estático en el que los mensajes de error se pasan a funciones de devolución de llamada específicas cuando fallan solicitudes específicas. Los errores se agrupan en tipos genéricos, de autenticación y de autorización. Para obtener la lista de errores notificados en el sistema original, consulte la sección Informes de errores originales.
Informes de errores avanzados advanced-error-reporting
SDK de JavaScript de AccessEnabler accessenabler-javascript-sdk
El nuevo sistema de informes de errores se deja opcional, por lo que el implementador puede registrar explícitamente una llamada de retorno del controlador de errores para recibir informes de errores avanzados. El sistema incluye la capacidad de registrar y anular el registro de varias llamadas de retorno de error de forma dinámica. Además, puede registrar cualquier llamada de retorno de error nueva en cuanto se cargue el SDK de JavaScript de AccessEnabler, sin necesidad de realizar ninguna otra inicialización (antes de llamar a setRequestor()
), lo que significa que puede recibir informes avanzados sobre los errores de inicialización y configuración.
Implementación access-enab-js-imp
yourErrorHandler(errorData:Object)
La función de devolución de llamada del controlador de errores recibirá un único objeto (un mapa) con la siguiente estructura:
{
errorId: "CFG410",
level: "error",
message: "This a fancy message", // Optional
.
. // Optional key/value pairs
.
}
1. Vincular bind
.bind(eventType:String, handlerName:String):void
Adjunta un controlador para un evento.
eventType
: SOLO el valor "errorEvent
" provoca que el SDK de JavaScript de AccessEnabler active las devoluciones de llamadas de los informes de errores avanzados.
handlerName
: una cadena que especifica el nombre de la función de controlador de errores.
Ambos parámetros de enlace deben utilizar únicamente caracteres del siguiente conjunto: [0-9a-zA-Z][-._a-zA-Z0-9]
; es decir, los parámetros deben comenzar con un número o una letra y, a continuación, pueden incluir sólo guiones, puntos, guiones bajos y caracteres alfanuméricos. Además, los parámetros no pueden superar los 1024 caracteres.
Ejemplo de controladores de error de enlace:
accessEnabler.bind('errorEvent', 'myCustomErrorHandler');
accessEnabler.bind('errorEvent', 'errorLogger');
Debido a limitaciones técnicas, no se puede enlazar un cierre ni una función anónima. Debe especificar el nombre del método en el segundo parámetro.
2. Desenlazar unbind
.unbind(eventType:String, handlerName:String=null):void
Quita un controlador de eventos previamente adjunto.
eventType
: SOLAMENTE el valor 'errorEvent
' provoca que el SDK de JavaScript de AccessEnabler active las devoluciones de llamadas de informes de error avanzadas.
handlerName
: se quitará una cadena que especifica el nombre de la función de controlador de errores, si es nula o falta, todos los controladores adjuntos para el eventType
especificado.
Ambos parámetros de enlace deben utilizar únicamente caracteres del siguiente conjunto: [0-9a-zA-Z][-._a-zA-Z0-9]
; es decir, los parámetros deben comenzar con un número o una letra y, a continuación, pueden incluir sólo guiones, puntos, guiones bajos y caracteres alfanuméricos. Además, los parámetros no pueden superar los 1024 caracteres.
Ejemplo de quitar un solo controlador de error:
accessEnabler.unbind('errorEvent', 'errorLogger');
Ejemplo eliminando todos los controladores de error:
accessEnabler.unbind('errorEvent');
SDK de AccessEnabler para iOS/tvOS accessenabler-ios-tvos-sdk
El nuevo sistema de notificación de errores es obligatorio, por lo que el implementador debe ajustarse explícitamente al nuevo protocolo Objective C "EntitlementStatus". Este nuevo enfoque permite a los programadores recibir informes de errores avanzados.
Implementación accessenab-ios-tvossdk-imp
Un implementador debe cumplir con el siguiente protocolo EntitlementStatus:
EntitlementStatus.h
#import <Foundation/Foundation.h>
@protocol EntitlementStatus <NSObject>
- (void)status:(NSDictionary *)statusDictionary;
@end
Su función status recibirá un solo objeto (un NSDictionary
) con la siguiente estructura:
{
errorId: "CFG410",
level: "error",
message: "This a fancy message", // Optional
.
. // Optional key/value pairs
.
}
1. Declaración
@interface MyEntitlementStatusDelegate : NSObject <EntitlementStatus>
2. Implementación
@implementation DemoAppAppDelegate
// very simple implementation
- (void)status:(NSDictionary *)statusDict {
NSLog(@"%@:\n%@", statusDict[@"level"], statusDict);
}
SDK de Android de AccessEnabler accessenabler-android-sdk
El nuevo sistema de informe de errores es obligatorio, ya que el implementador debe cumplir explícitamente con el protocolo definido en la interfaz IAccessEnablerDelegate
. Este nuevo enfoque permite a los programadores recibir informes de errores avanzados.
Implementación access-enablr-androidsdk-imp
Un implementador debe controlar el nuevo método status
desde la interfaz IAccessEnablerDelegate
. La función status
recibirá un único objeto AdvancedStatus
con el siguiente modelo:
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
}
Muestra
@Override
public void status(AdvancedStatus advancedStatus) {
String status = "status(" + advancedStatus.id + ", " + advancedStatus.level + ", " + advancedStatus.message + ", " + advancedStatus.resource + ")";
Log.i(LOG_TAG, status);
}
SDK de AccessEnabler FireOS accessenabler-fireos-sdk
El nuevo sistema de informe de errores es obligatorio, ya que el implementador debe cumplir explícitamente con el protocolo definido en la interfaz IAccessEnablerDelegate
. Este nuevo enfoque permite a los programadores recibir informes de errores avanzados.
Implementación access-enab-fireos-sdk-
Un implementador necesita controlar el nuevo método status
desde la interfazIAccessEnablerDelegate
. La función status
recibirá un único objeto AdvancedStatus
con el siguiente modelo:
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
}
Muestra
@Override
public void status(AdvancedStatus advancedStatus) {
String status = "status(" + advancedStatus.id + ", " + advancedStatus.level + ", " + advancedStatus.message + ", " + advancedStatus.resource + ")";
Log.i(LOG_TAG, status);
}
Referencia de códigos de error avanzados advanced-error-codes-reference
En la tabla siguiente se enumeran y describen los códigos de error expuestos por la API de error más reciente, junto con las acciones sugeridas para corregirlos:
Indica o solicita al usuario que cierre sesión explícitamente desde Configuración -> Proveedor de TV en iOS/iPadOS.
Cerrar sesión explícitamente desde Configuración -> Proveedor de TV en iOS/iPadOS
: Adobe de contacto para administrar la lista blanca de dominios para el ID de solicitante utilizado
- iOS: compruebe que está utilizando el certificado correcto y que la firma se ha creado correctamente
: si lo desea, informe al usuario de que debe iniciar sesión de nuevo.
[https://]{SP_FQDN\}
en el explorador y acepte manualmente los certificados SSL, por ejemplo, https://api.auth.adobe.com o https://api.auth-staging.adobe.com- Marcar los certificados de proxy como de confianza
Realice acciones para evitar flujos de derechos, ya que es probable que fallen.
- El desarrollador tiene una suplantación no válida.
: el usuario tiene problemas de red y no puede acceder a los dominios de autenticación de Adobe Pass.
: los servidores de autenticación de Adobe Pass no están configurados correctamente.
Nota: En Firefox, aparecerá CFG400 en lugar de CFG404 (limitación del navegador)
: comprobar la configuración de red/DNS.
: informar al Adobe.
- Omitir autenticación de Adobe Pass.
- Informar al Adobe.
: si lo desea, puede presentar una lista de MVPD normales.
- Presentar una lista de MVPD regulares.
- Ocultar la opción TempPass.
1. El explorador tiene deshabilitadas las cookies (de terceros) (no se aplica a AccessEnabler JavaScript SDK versión 4.x)
2. El explorador tiene habilitada la opción Impedir el seguimiento entre sitios (Safari 11+)
3. La sesión ha caducado
4. El programador llama a las API de autenticación en una sucesión incorrecta
NOTA: Este código de error no está disponible para flujos de autenticación de redireccionamiento de página completa.
2. Pedir al usuario que deshabilite el seguimiento entre sitios
3. Pedir al usuario que vuelva a autenticar
4. Llamar a las API en el orden correcto
2. Deshabilitar seguimiento entre sitios
3. Volver a autenticar
4. N/D
Nota: Este es el "Error de autenticación genérica" y "Error de autenticación interna" del sistema de errores original. Este error se eliminará gradualmente.
Nota: Se trata de un error irrecuperable. Informar al usuario de que la aplicación no está disponible.
- JavaScript: compruebe el extracto de software en la aplicación del sitio web.
Abra un ticket usando Zendesk e informe al usuario de que el sistema no está disponible temporalmente
Nota: Se trata de un error irrecuperable. Informar al usuario de que la aplicación no está disponible.
- JavaScript: compruebe el extracto de software en la aplicación del sitio web.
Abra un ticket usando Zendesk e informe al usuario de que el sistema no está disponible temporalmente
Nota: Se trata de un error irrecuperable. Informar al usuario de que la aplicación no está disponible.
- Informar al usuario.
: la clave "message" del mensaje de error PUEDE contener un mensaje más detallado proporcionado por MVPD.
- Informar al usuario.
: informe al usuario de que la MVPD ha experimentado dificultades y que debe intentarlo más tarde.
Nota: este es el "Error de autenticación genérico" y "Error de autenticación interna" heredados. Este error se eliminará gradualmente.
: póngase en contacto con el soporte de autenticación de Adobe Pass para buscar o configurar el número máximo de recursos permitidos.
La autenticación/autorización de
no se mantiene más allá de la página actual. Cada carga de página obliga al usuario a autenticarse. Los TTL configurados no se aplican en todas las recargas de página.
: informe al usuario sobre cómo aumentar el espacio de almacenamiento disponible.
: como alternativa, cierre la sesión para borrar el almacenamiento.
: cierre la sesión para borrar el almacenamiento.
Informe de errores original original-error-reporting
En esta sección se describe el sistema original de informe de errores, junto con los códigos de error originales. En el sistema original de informes de errores, AccessEnabler pasa errores a estas dos funciones de devolución de llamada: setAuthenticationStatus()
después de una llamada a checkAuthentication()
; tokenRequestFailed()
, después del error de una llamada a checkAuthorization()
o getAuthorization()
.
Los informes de errores y las API de estado originales siguen funcionando exactamente como antes. Sin embargo, en adelante, las API de informes de errores originales no se actualizarán. Todos los informes de errores nuevos y las actualizaciones de los errores antiguos se reflejarán SOLAMENTE en el nuevo sistema de informes de errores avanzados.
Para ver ejemplos del uso del sistema de notificación de errores original, consulte las funciones JavaScript API Reference:setAuthenticationStatus() y tokenRequestFailed(), iOS/tvOS API Reference: setAuthenticationStatus()y tokentRequestFailed(), Android API Reference: setAuthenticationStatus() y tokenRequest3}Request Failed().