오류 보고 error-reporting
개요 overview
Adobe Pass 인증의 오류 보고는 현재 두 가지 방법으로 구현됩니다.
-
고급 오류 보고 구현자는 고급 오류 보고를 받기 위해 AccessEnabler JavaScript SDK의 경우 오류 콜백을 등록하거나 AccessEnabler iOS/tvOS SDK 및 AccessEnabler Android SDK의 경우 인터페이스 메서드 "
status
"을(를) 구현합니다. 오류는 정보, 경고 및 오류 유형으로 분류됩니다. 이 보고 시스템은 비동기 입니다. 여러 오류가 트리거되는 순서를 보장할 수 없습니다. 고급 오류 보고 시스템에 대한 자세한 내용은 고급 오류 보고 섹션을 참조하십시오. -
원래 오류 보고 - 특정 요청이 실패할 때 오류 메시지가 특정 콜백 함수에 전달되는 정적 보고 시스템입니다. 오류는 일반, 인증 및 권한 부여 유형으로 그룹화됩니다. 원래 시스템에서 보고된 오류 목록을 보려면 원래 오류 보고 섹션을 참조하십시오.
고급 오류 보고 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]
집합의 문자만 사용해야 합니다. 즉, 매개 변수는 숫자나 문자로 시작해야 하며 하이픈, 마침표, 밑줄 및 영숫자만 포함할 수 있습니다. 또한 매개 변수는 1,024자를 초과할 수 없습니다.
바인딩 오류 처리기의 예:
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]
집합의 문자만 사용해야 합니다. 즉, 매개 변수는 숫자나 문자로 시작해야 하며 하이픈, 마침표, 밑줄 및 영숫자만 포함할 수 있습니다. 또한 매개 변수는 1,024자를 초과할 수 없습니다.
단일 오류 처리기를 제거하는 예:
accessEnabler.unbind('errorEvent', 'errorLogger');
예 모든 오류 처리기를 제거하는 중:
accessEnabler.unbind('errorEvent');
AccessEnabler iOS/tvOS SDK accessenabler-ios-tvos-sdk
새 오류 보고 시스템은 필수 항목이므로 구현자는 새 목표 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
구현자는 IAccessEnablerDelegate
인터페이스에서 새 status
메서드를 처리해야 합니다. 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-
구현자는 IAccessEnablerDelegate
인터페이스에서 새 status
메서드를 처리해야 합니다. 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에서 [설정] -> [TV 공급자]에서 명시적으로 로그아웃하도록 사용자에게 지시하거나 묻습니다.
iOS/iPadOS의 [설정] -> [TV 공급자]에서 명시적으로 로그아웃
에서만 AccessEnabler를 로드합니다.
-
에 사용된 요청자 ID에 대한 도메인 허용 목록을 관리하려면 Adobe에게 문의하십시오.
- iOS: 올바른 인증서를 사용하고 있으며 서명이 제대로 생성되었는지 확인합니다.
- 필요한 경우 다시 로그인해야 함을 사용자에게 알립니다.
[https://]{SP_FQDN\}
을(를) 로드하고 SSL 인증서를 수동으로 승인합니다(예: https://api.auth.adobe.com 또는 https://api.auth-staging.adobe.com).
- 프록시 인증서를 신뢰할 수 있는 것으로 표시
권한 흐름이 실패할 수 있으므로 이를 방지하기 위한 작업을 수행합니다.
- 개발자에게 잘못된 스푸핑이 있습니다.
- 사용자에게 네트워킹 문제가 있어 Adobe Pass 인증 도메인에 연결할 수 없습니다.
-Adobe Pass 인증 서버가 잘못 구성되었습니다.
참고: Firefox에서는 CFG404 대신 CFG400이 표시됩니다(브라우저 제한 사항)
- 네트워크/DNS 설정을 확인합니다.
- Adobe 알림.
- Adobe Pass 인증을 무시합니다.
- Adobe 알림.
- 필요한 경우 일반 MVPD 목록을 표시합니다.
- 일반 MVPD 목록을 표시합니다.
- TempPass 옵션을 숨깁니다.
1. 브라우저에 (타사) 쿠키가 비활성화되어 있습니다(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는 checkAuthentication()
호출 후 setAuthenticationStatus()
, checkAuthorization()
또는 getAuthorization()
호출 실패 후 tokenRequestFailed()
두 콜백 함수에 오류를 전달합니다.
원래 오류 보고 및 상태 API는 이전과 동일하게 계속 작동합니다. 그러나 앞으로는 원래 오류 보고 API가 업데이트되지 않습니다. 이전 오류에 대한 새 오류 보고와 업데이트는 모두 새 고급 오류 보고 시스템에서만 반영됩니다.
원래 오류 보고 시스템을 사용하는 예는 JavaScript API 참조:setAuthenticationStatus() 및 tokenRequestFailed() 함수, iOS/tvOS API 참조: setAuthenticationStatus() 및 tokentRequestFailed(), Android API 참조: setAuthenticationStatus() 및 tokenRequestFailed()을 참조하십시오.