Rapport d’erreurs error-reporting
Vue d’ensemble overview
Le rapport d’erreurs dans l’authentification Adobe Pass est actuellement implémenté de deux manières différentes :
-
Création de rapports d’erreurs avancés L’implémentateur enregistre un rappel d’erreur en cas du SDK JavaScript AccessEnabler ou implémente une méthode d’interface nommée "
status
" dans le cas du SDK iOS/tvOS AccessEnabler et du SDK Android AccessEnabler, afin de recevoir des rapports avancés sur les erreurs. Les erreurs sont classées dans les types Informations, Avertissement et Erreur. Ce système de création de rapports est asynchrone, dans la mesure où il n'y a aucune garantie de l'ordre dans lequel plusieurs erreurs seront déclenchées. Pour plus d’informations sur le système de reporting avancé des erreurs, voir la section Rapport avancé d’erreurs . -
Rapport d’erreurs d’origine - Un système de rapports statique dans lequel les messages d’erreur sont transmis à des fonctions de rappel spécifiques en cas d’échec de requêtes spécifiques. Les erreurs sont regroupées en types génériques, d’authentification et d’autorisation. Pour obtenir la liste des erreurs signalées dans le système d’origine, voir la section Rapport d’erreurs d’origine .
Rapport d’erreurs avancé advanced-error-reporting
SDK JavaScript AccessEnabler accessenabler-javascript-sdk
Le nouveau système de création de rapports d’erreurs est facultatif. Par conséquent, l’implémentateur peut enregistrer explicitement un rappel de gestionnaire d’erreurs pour recevoir des rapports d’erreur avancés. Le système offre la possibilité d’enregistrer et d’annuler l’enregistrement dynamique de plusieurs rappels d’erreur. En outre, vous pouvez enregistrer de nouveaux rappels d’erreur dès que le SDK JavaScript AccessEnabler est chargé, sans avoir à effectuer d’autre initialisation (avant d’appeler setRequestor()
), ce qui signifie que vous avez la possibilité de recevoir des rapports avancés sur les erreurs d’initialisation et de configuration.
Implémentation access-enab-js-imp
yourErrorHandler(errorData:Object)
Votre fonction de rappel de gestionnaire d’erreurs recevra un seul objet (une carte) avec la structure suivante :
{
errorId: "CFG410",
level: "error",
message: "This a fancy message", // Optional
.
. // Optional key/value pairs
.
}
1. Liaison bind
.bind(eventType:String, handlerName:String):void
Joint un gestionnaire pour un événement.
eventType
- SEULE la valeur "errorEvent
" entraîne le déclenchement par le SDK JavaScript AccessEnabler de rappels avancés de rapports d’erreur.
handlerName
: chaîne spécifiant le nom de la fonction du gestionnaire d’erreurs.
Les deux paramètres de liaison ne doivent utiliser que les caractères de l’ensemble suivant : [0-9a-zA-Z][-._a-zA-Z0-9]
. En d’autres termes, les paramètres doivent commencer par un nombre ou une lettre, et ne peuvent alors inclure que des tirets, des points, des traits de soulignement et des caractères alphanumériques. En outre, les paramètres ne peuvent pas dépasser 1 024 caractères.
Exemple de gestionnaires d’erreurs de liaison :
accessEnabler.bind('errorEvent', 'myCustomErrorHandler');
accessEnabler.bind('errorEvent', 'errorLogger');
En raison de limitations techniques, vous ne pouvez pas lier une fermeture ou une fonction anonyme. Vous devez spécifier le nom de la méthode dans le deuxième paramètre.
2. Délier unbind
.unbind(eventType:String, handlerName:String=null):void
Supprime un gestionnaire d’événements précédemment joint.
eventType
- SEULE la valeur 'errorEvent
' entraîne le déclenchement du SDK JavaScript AccessEnabler qui déclenche des rappels avancés pour les rapports d’erreur.
handlerName
- Une chaîne spécifiant le nom de la fonction du gestionnaire d’erreurs, si est nul ou si tous les gestionnaires associés sont manquants pour le eventType
spécifié sera supprimé.
Les deux paramètres de liaison ne doivent utiliser que les caractères de l’ensemble suivant : [0-9a-zA-Z][-._a-zA-Z0-9]
. En d’autres termes, les paramètres doivent commencer par un nombre ou une lettre, et ne peuvent alors inclure que des tirets, des points, des traits de soulignement et des caractères alphanumériques. En outre, les paramètres ne peuvent pas dépasser 1 024 caractères.
Exemple de suppression d’un gestionnaire d’erreurs unique :
accessEnabler.unbind('errorEvent', 'errorLogger');
Exemple supprimant tous les gestionnaires d’erreurs :
accessEnabler.unbind('errorEvent');
SDK AccessEnabler iOS/tvOS accessenabler-ios-tvos-sdk
Le nouveau système de reporting des erreurs est obligatoire. Par conséquent, l’implémentateur doit se conformer explicitement au nouveau protocole Objective C "EntitlementStatus". Cette nouvelle approche permet aux programmeurs de recevoir des rapports d’erreur avancés.
Implémentation accessenab-ios-tvossdk-imp
Un implémentateur doit se conformer au protocole EntitlementStatus suivant :
EntitlementStatus.h
#import <Foundation/Foundation.h>
@protocol EntitlementStatus <NSObject>
- (void)status:(NSDictionary *)statusDictionary;
@end
Votre fonction status recevra un seul objet (un NSDictionary
) avec la structure suivante :
{
errorId: "CFG410",
level: "error",
message: "This a fancy message", // Optional
.
. // Optional key/value pairs
.
}
1. Déclaration
@interface MyEntitlementStatusDelegate : NSObject <EntitlementStatus>
2. Implémentation
@implementation DemoAppAppDelegate
// very simple implementation
- (void)status:(NSDictionary *)statusDict {
NSLog(@"%@:\n%@", statusDict[@"level"], statusDict);
}
SDK Android AccessEnabler accessenabler-android-sdk
Le nouveau système de création de rapports d’erreurs est obligatoire, car l’implémentateur doit explicitement se conformer au protocole défini par l’interface IAccessEnablerDelegate
. Cette nouvelle approche permet aux programmeurs de recevoir des rapports d’erreur avancés.
Implémentation access-enablr-androidsdk-imp
Un implémentateur doit gérer la nouvelle méthode status
à partir de l’interfaceIAccessEnablerDelegate
. La fonction status
recevra un seul objet AdvancedStatus
avec le modèle suivant :
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
}
Sample
@Override
public void status(AdvancedStatus advancedStatus) {
String status = "status(" + advancedStatus.id + ", " + advancedStatus.level + ", " + advancedStatus.message + ", " + advancedStatus.resource + ")";
Log.i(LOG_TAG, status);
}
SDK AccessEnabler FireOS accessenabler-fireos-sdk
Le nouveau système de création de rapports d’erreurs est obligatoire, car l’implémentateur doit explicitement se conformer au protocole défini par l’interface IAccessEnablerDelegate
. Cette nouvelle approche permet aux programmeurs de recevoir des rapports d’erreur avancés.
Implémentation access-enab-fireos-sdk-
Un implémentateur doit gérer la nouvelle méthode status
à partir de l’interfaceIAccessEnablerDelegate
. La fonction status
recevra un seul objet AdvancedStatus
avec le modèle suivant :
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
}
Sample
@Override
public void status(AdvancedStatus advancedStatus) {
String status = "status(" + advancedStatus.id + ", " + advancedStatus.level + ", " + advancedStatus.message + ", " + advancedStatus.resource + ")";
Log.i(LOG_TAG, status);
}
Référence des codes d’erreur avancés advanced-error-codes-reference
Le tableau suivant répertorie et décrit les codes d’erreur exposés par la nouvelle API d’erreur, ainsi que les actions suggérées pour les corriger :
Demandez à l’utilisateur de se déconnecter explicitement de Paramètres -> Fournisseur de télévision sur iOS/iPadOS.
Déconnexion explicite de Paramètres -> Fournisseur de télévision sur iOS/iPadOS
- Contactez l’Adobe afin de gérer la liste blanche de domaine pour l’ID de demandeur utilisé
- iOS : vérifiez que vous utilisez le certificat correct et que la signature est correctement créée.
- Si vous le souhaitez, informez l’utilisateur qu’il doit se reconnecter.
[https://]{SP_FQDN\}
dans le navigateur et acceptez manuellement les certificats SSL, par exemple https://api.auth.adobe.com ou https://api.auth-staging.adobe.com: marquez les certificats du proxy comme étant approuvés.
Prenez des mesures pour empêcher les flux de droits, car ils vont probablement échouer.
- Le développeur a mis en place un usurpation non valide.
- L’utilisateur rencontre des problèmes de mise en réseau et ne peut pas accéder aux domaines d’authentification Adobe Pass.
- Les serveurs d’authentification Adobe Pass sont mal configurés.
Remarque : Dans Firefox, CFG400 apparaîtra à la place de CFG404 (limitation du navigateur).
- Vérifiez les paramètres réseau/DNS.
- Informe l’Adobe.
- Contournement de l’authentification Adobe Pass.
- Informe l’Adobe.
- Vous pouvez éventuellement présenter une liste de MVPD standard.
- Présenter une liste de MVPD standard.
- Masquez l’option TempPass.
1. Les cookies (tiers) du navigateur sont désactivés (ne s’applique pas au SDK JavaScript AccessEnabler version 4.x)
2. Le navigateur a activé l’option Empêcher le suivi sur plusieurs sites (Safari 11+)
3. La session a expiré
4. Le programmeur appelle les API d'authentification en succession incorrecte
REMARQUE : ce code d’erreur n’est pas disponible pour les flux d’authentification de redirection de page entière.
2. Demander à l’utilisateur de désactiver le suivi intersite
3. Demander à l’utilisateur de se réauthentifier
4. Appeler les API dans le bon ordre
2. Désactiver le suivi intersite
3. Reconnecter
4. S/O
Remarque : Il s’agit de l’erreur d’origine "Erreur d’authentification générique" et "Erreur d’authentification interne" du système d’erreur. Cette erreur finira par disparaître progressivement.
Remarque : il s’agit d’une erreur irrécupérable. Informez l’utilisateur que l’application n’est pas disponible.
- JavaScript : vérifiez l’instruction logicielle dans l’application de votre site web.
Ouvrez un ticket à l’aide de Zendesk et informez l’utilisateur que le système est temporairement indisponible.
Remarque : il s’agit d’une erreur irrécupérable. Informez l’utilisateur que l’application n’est pas disponible.
- JavaScript : vérifiez l’instruction logicielle dans l’application de votre site web.
Ouvrez un ticket à l’aide de Zendesk et informez l’utilisateur que le système est temporairement indisponible.
Remarque : il s’agit d’une erreur irrécupérable. Informez l’utilisateur que l’application n’est pas disponible.
- Informer l’utilisateur.
- La clé 'message' du message d'erreur PEUT contenir un message plus détaillé fourni par le MVPD.
- Informer l’utilisateur.
- Indiquez à l’utilisateur que le MVPD a rencontré des difficultés et qu’il doit essayer plus tard.
Remarque : Il s’agit de l’héritage "Erreur d’authentification générique" et "Erreur d’authentification interne". Cette erreur finira par disparaître progressivement.
- Contactez le support d’authentification Adobe Pass pour rechercher/configurer le nombre maximum de ressources autorisées.
L’authentification/l’autorisation ne persiste pas au-delà de la page actuelle !. À chaque chargement de page, l’utilisateur doit s’authentifier. Les TTL configurés ne sont pas appliqués lors des rechargements de page.
- Informer l’utilisateur sur la façon d’augmenter l’espace de stockage disponible.
- Vous pouvez également vous déconnecter afin d’effacer le stockage.
- Déconnectez-vous pour effacer le stockage.
Rapport d’erreurs d’origine original-error-reporting
Cette section décrit le système de reporting des erreurs d’origine, ainsi que les codes d’erreur d’origine. Dans le système de création de rapports d’erreurs d’origine, AccessEnabler transmet les erreurs à ces deux fonctions de rappel : setAuthenticationStatus()
après un appel à checkAuthentication()
; tokenRequestFailed()
, après l’échec d’un appel à checkAuthorization()
ou getAuthorization()
.
Les rapports d’erreur d’origine et les API d’état continuent de fonctionner exactement comme auparavant. Toutefois, à l’avenir, les API de création de rapports d’erreur d’origine ne seront pas mises à jour. Tous les nouveaux rapports d’erreur et mises à jour sur les anciennes erreurs seront UNIQUEMENT répercutés dans le nouveau système de création de rapports d’erreurs avancé.
Pour obtenir des exemples d’utilisation du système de reporting d’erreur d’origine, voir les fonctions Référence de l’API JavaScript:setAuthenticationStatus() et tokenRequestFailed(), Référence de l’API iOS/tvOS : setAuthenticationStatus()} et 🔗tokentRequestRequestFailed(){1RequestRequestRequestRequestRequest Référence de l’API Android : setAuthenticationStatus() et tokenRequestFailed().