Segnalazione errori error-reporting
Panoramica overview
La segnalazione degli errori nell’autenticazione di Adobe Pass è attualmente implementata in due modi diversi:
-
Segnalazione avanzata errori L'implementatore registra un callback di errore in caso di AccessEnabler JavaScript SDK o implementa un metodo di interfaccia denominato "
status
" in caso di AccessEnabler iOS/tvOS SDK e AccessEnabler Android SDK, per ricevere la segnalazione avanzata degli errori. Gli errori sono suddivisi in Informazioni, Avviso e Errore. Il sistema di reporting è asincrono, in quanto non è garantito l'ordine in cui verranno attivati più errori. Per informazioni dettagliate sul sistema di segnalazione errori avanzato, vedere la sezione Segnalazione errori avanzata. -
Segnalazione errori originale - Sistema di segnalazione statico in cui i messaggi di errore vengono trasmessi a funzioni di callback specifiche quando richieste specifiche non riescono. Gli errori sono raggruppati in tipi generici, di autenticazione e di autorizzazione. Per l'elenco degli errori segnalati nel sistema originale, vedere la sezione Segnalazione errori originale.
Segnalazione avanzata degli errori advanced-error-reporting
SDK di AccessEnabler per JavaScript accessenabler-javascript-sdk
Il nuovo sistema di segnalazione degli errori rimane facoltativo, pertanto l’implementatore può registrare esplicitamente un callback del gestore degli errori per ricevere segnalazioni avanzate degli errori. Il sistema include la possibilità di registrare e annullare la registrazione di più callback di errore in modo dinamico. Inoltre, è possibile registrare qualsiasi nuovo callback di errore non appena viene caricato l'SDK JavaScript di AccessEnabler, senza dover eseguire altre inizializzazioni (prima di chiamare setRequestor()
), il che significa che è possibile ricevere report avanzati sugli errori di inizializzazione e configurazione.
Implementazione access-enab-js-imp
yourErrorHandler(errorData:Object)
La funzione di callback del gestore degli errori riceverà un singolo oggetto (una mappa) con la seguente struttura:
{
errorId: "CFG410",
level: "error",
message: "This a fancy message", // Optional
.
. // Optional key/value pairs
.
}
1. Legare bind
.bind(eventType:String, handlerName:String):void
Collega un gestore per un evento.
eventType
- SOLO il valore "errorEvent
" genera nell'SDK di AccessEnabler JavaScript l'attivazione di callback di report di errori avanzati.
handlerName
- una stringa che specifica il nome della funzione del gestore errori.
Entrambi i parametri di associazione devono utilizzare solo i caratteri del seguente set: [0-9a-zA-Z][-._a-zA-Z0-9]
. I parametri devono iniziare con un numero o una lettera e possono quindi includere solo trattini, punti, trattini bassi e caratteri alfanumerici. Inoltre, i parametri non possono superare i 1024 caratteri.
Esempio di gestori errori di associazione:
accessEnabler.bind('errorEvent', 'myCustomErrorHandler');
accessEnabler.bind('errorEvent', 'errorLogger');
A causa di limitazioni tecniche, non è possibile associare una chiusura o una funzione anonima. È necessario specificare il nome del metodo nel secondo parametro.
2. Separa unbind
.unbind(eventType:String, handlerName:String=null):void
Rimuove un gestore eventi precedentemente associato.
eventType
- SOLO il valore 'errorEvent
' genera nell'SDK di AccessEnabler JavaScript l'attivazione di callback di report di errori avanzati.
handlerName
- una stringa che specifica il nome della funzione del gestore errori, se è null o mancano tutti i gestori associati per il eventType
specificato verrà rimossa.
Entrambi i parametri di associazione devono utilizzare solo i caratteri del seguente set: [0-9a-zA-Z][-._a-zA-Z0-9]
. I parametri devono iniziare con un numero o una lettera e possono quindi includere solo trattini, punti, trattini bassi e caratteri alfanumerici. Inoltre, i parametri non possono superare i 1024 caratteri.
Esempio di rimozione di un singolo gestore errori:
accessEnabler.unbind('errorEvent', 'errorLogger');
Esempio rimozione di tutti i gestori errori:
accessEnabler.unbind('errorEvent');
SDK di AccessEnabler iOS/tvOS accessenabler-ios-tvos-sdk
Il nuovo sistema di segnalazione degli errori è obbligatorio, pertanto l’implementatore deve conformarsi esplicitamente al nuovo protocollo "EntitlementStatus" dell’Obiettivo C. Questo nuovo approccio consente ai programmatori di ricevere report avanzati sugli errori.
Implementazione accessenab-ios-tvossdk-imp
Un implementatore deve essere conforme al seguente protocollo EntitlementStatus:
StatoDiritto.h
#import <Foundation/Foundation.h>
@protocol EntitlementStatus <NSObject>
- (void)status:(NSDictionary *)statusDictionary;
@end
La funzione status riceverà un singolo oggetto (un NSDictionary
) con la seguente struttura:
{
errorId: "CFG410",
level: "error",
message: "This a fancy message", // Optional
.
. // Optional key/value pairs
.
}
1. Dichiarazione
@interface MyEntitlementStatusDelegate : NSObject <EntitlementStatus>
2. Implementazione
@implementation DemoAppAppDelegate
// very simple implementation
- (void)status:(NSDictionary *)statusDict {
NSLog(@"%@:\n%@", statusDict[@"level"], statusDict);
}
SDK di AccessEnabler per Android accessenabler-android-sdk
Il nuovo sistema di segnalazione errori è obbligatorio perché l'implementatore deve essere conforme in modo esplicito al protocollo definito dall'interfaccia IAccessEnablerDelegate
. Questo nuovo approccio consente ai programmatori di ricevere report avanzati sugli errori.
Implementazione access-enablr-androidsdk-imp
Un implementatore deve gestire il nuovo metodo status
dall'interfacciaIAccessEnablerDelegate
. La funzione status
riceverà un singolo oggetto AdvancedStatus
con il seguente modello:
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
}
Esempio
@Override
public void status(AdvancedStatus advancedStatus) {
String status = "status(" + advancedStatus.id + ", " + advancedStatus.level + ", " + advancedStatus.message + ", " + advancedStatus.resource + ")";
Log.i(LOG_TAG, status);
}
SDK di AccessEnabler FireOS accessenabler-fireos-sdk
Il nuovo sistema di segnalazione errori è obbligatorio perché l'implementatore deve essere conforme in modo esplicito al protocollo definito dall'interfaccia IAccessEnablerDelegate
. Questo nuovo approccio consente ai programmatori di ricevere report avanzati sugli errori.
Implementazione access-enab-fireos-sdk-
Un implementatore deve gestire il nuovo metodo status
dall'interfacciaIAccessEnablerDelegate
. La funzione status
riceverà un singolo oggetto AdvancedStatus
con il seguente modello:
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
}
Esempio
@Override
public void status(AdvancedStatus advancedStatus) {
String status = "status(" + advancedStatus.id + ", " + advancedStatus.level + ", " + advancedStatus.message + ", " + advancedStatus.resource + ")";
Log.i(LOG_TAG, status);
}
Riferimento codici di errore avanzati advanced-error-codes-reference
La tabella seguente elenca e descrive i codici di errore esposti dalla nuova API di errore, insieme alle azioni suggerite da intraprendere per correggerli:
Indica/richiede all'utente di disconnettersi esplicitamente da Impostazioni -> Provider TV su iOS/iPadOS.
Esci esplicitamente da Impostazioni -> Provider TV su iOS/iPadOS
- Contatta l'Adobe per gestire la whitelist del dominio per l'ID richiedente utilizzato
- iOS: verificare di utilizzare il certificato corretto e che la firma sia stata creata correttamente
- Facoltativamente, informare l'utente che deve effettuare di nuovo l'accesso.
[https://]{SP_FQDN\}
nel browser e accetta manualmente i certificati SSL, ad esempio https://api.auth.adobe.com o https://api.auth-staging.adobe.com- Contrassegna i certificati proxy come attendibili
Consente di eseguire azioni per impedire i flussi di adesione, poiché probabilmente non riusciranno.
- Lo sviluppatore dispone di uno spoofing non valido.
- L'utente ha problemi di rete e non può raggiungere i domini di autenticazione di Adobe Pass.
- Configurazione errata dei server di autenticazione Adobe Pass.
Nota: su Firefox, CFG400 verrà visualizzato al posto di CFG404 (limitazione del browser)
- Controllare le impostazioni di rete/DNS.
- Informa Adobe.
- Ignora l'autenticazione Adobe Pass.
- Informa Adobe.
- Facoltativamente presentare un elenco di MVPD regolari.
- Presenta un elenco di MVPD regolari.
- Nasconde l'opzione TempPass.
1 Il browser ha i cookie (di terze parti) disabilitati (non applicabile per AccessEnabler JavaScript SDK versione 4.x)
2. Il browser ha abilitato la funzione Impedisci il rilevamento intersito (Safari 11+)
3. La sessione è scaduta
4. Il programmatore chiama le API di autenticazione con una successione errata
NOTA: questo codice di errore non è disponibile per i flussi di autenticazione di reindirizzamento a pagina intera.
2. Richiede all'utente di disabilitare il rilevamento intersito
3. Richiedi all'utente di riautenticare
4. Chiamare le API nell’ordine corretto
2. Disattiva il rilevamento intersito
3. Autentica di nuovo
4. N/D
Nota: questo è l'errore originale del sistema "Errore di autenticazione generico" e "Errore di autenticazione interna". Questo errore verrà gradualmente eliminato.
Nota: errore irreversibile. Informare l'utente che l'applicazione non è disponibile.
- JavaScript: controllare l'istruzione software nell'applicazione del sito Web.
Aprire un ticket utilizzando Zendesk e informare l'utente che il sistema è temporaneamente non disponibile
Nota: errore irreversibile. Informare l'utente che l'applicazione non è disponibile.
- JavaScript: controllare l'istruzione software nell'applicazione del sito Web.
Aprire un ticket utilizzando Zendesk e informare l'utente che il sistema è temporaneamente non disponibile
Nota: errore irreversibile. Informare l'utente che l'applicazione non è disponibile.
- Informare l'utente.
- La chiave 'message' nel messaggio di errore POTREBBE contenere un messaggio più dettagliato fornito da MVPD.
- Informare l'utente.
- Informare l'utente che l'MVPD ha incontrato problemi e riprovare più tardi.
Nota: si tratta dell'errore di autenticazione generico e dell'errore di autenticazione interna legacy. Questo errore verrà gradualmente eliminato.
- Contattare il supporto Adobe Pass per l'autenticazione per trovare/impostare il numero massimo di risorse consentite.
Autenticazione/autorizzazione
non persiste oltre la pagina corrente. A ogni caricamento di pagina l’utente dovrà eseguire l’autenticazione. I TTL configurati non vengono applicati nei diversi ricaricamenti delle pagine.
- Informare l'utente su come aumentare lo spazio di archiviazione disponibile.
- In alternativa, disconnettersi per cancellare l'archiviazione.
- Disconnettersi per cancellare l'archiviazione.
Segnalazione errori originale original-error-reporting
Questa sezione descrive il sistema di segnalazione degli errori originale e i codici di errore originali. Nel sistema di segnalazione degli errori originale AccessEnabler trasmette gli errori alle due funzioni di callback seguenti: setAuthenticationStatus()
dopo una chiamata a checkAuthentication()
; tokenRequestFailed()
, dopo l'errore di una chiamata a checkAuthorization()
o getAuthorization()
.
La segnalazione degli errori originale e le API di stato continuano a funzionare esattamente come prima. Tuttavia, andando avanti le API di segnalazione errori originali non verranno aggiornate. Tutte le nuove segnalazioni di errori e gli aggiornamenti relativi ai vecchi errori verranno rispecchiati SOLO nel nuovo sistema Avanzato di Segnalazione errori.
Per esempi di utilizzo del sistema di segnalazione errori originale, vedere le funzioni Riferimento API di JavaScript:setAuthenticationStatus() e tokenRequestFailed(), Riferimento API di iOS/tvOS: setAuthenticationStatus()e tokentRequestFailed(), Riferimento API di Android: setAuthenticationStatus() e tokenRequestFailed() .