錯誤報告 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]
;也就是說,引數必須以數字或字母開頭,然後只能包含連字型大小、句號、底線和英數字元。 此外,引數不可超過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
實作程式需要處理介面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上的[設定 — >電視提供者]。
明確登出iOS/iPadOS上的[設定 — >電視提供者]
載入AccessEnabler
— 連絡Adobe,以便管理所使用Requestor ID
的網域白名單
- iOS:確認您使用正確的憑證,且簽章已正確建立
— 選擇性地通知使用者他需要重新登入。
[https://]{SP_FQDN\}
並手動接受SSL憑證,例如,https://api.auth.adobe.com 或 https://api.auth-staging.adobe.com— 將Proxy憑證標籤為受信任
採取動作以防止權益流程,因為這些流程可能會失敗。
— 開發人員已設定無效的偽造。
— 使用者發生網路問題,無法連線Adobe Pass驗證網域。
-Adobe Pass驗證伺服器設定錯誤。
注意: 在Firefox上,將會顯示CFG400而非CFG404 (瀏覽器限制)
— 檢查網路/DNS設定。
— 通知Adobe。
— 略過Adobe Pass驗證。
— 通知Adobe。
— 可選擇提供一般MVPD的清單。
— 提供一般MVPD的清單。
— 隱藏TempPass選項
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()和 requestfailed()。