@amazon-devices/tve-adobe-sso-enabler
Kepler Adobe Single Sign-On (SSO) Enabler for TV Everywhere (TVE) API提供了特定功能,可让第三方TVE应用能够对本地电视订阅者进行身份验证、授权和验证权利。如需查看Adobe解决方案的详细文档,请参阅Adobe网站上的REST API V2 - API - 概述。
Kepler上使用Adobe提供的SSO功能的TVE应用可以使用TveAdobeSsoEnabler API获取“Adobe-Subject-Token”。您可以按照Adobe的使用平台身份流进行单点登录文档中的说明,将该令牌附加到对Adobe所进行的API调用中。
开始使用
先决条件
- 请按照Adobe的文档创建应用,用于身份验证、授权或权利验证流程。
- 与亚马逊的解决方案架构师合作,对应用的软件包ID进行授权,以获取SSO令牌。
授权
只有经亚马逊解决方案架构师授权的应用能访问此API提供的SSO令牌。在亚马逊解决方案架构师授权应用后,您可能需要等待长达24小时,然后API才能获取SSO令牌。
设置
-
将以下库依赖项添加到package.json文件的
dependencies部分。"@amazon-devices/tve-adobe-sso-enabler": "~0.0.4", -
在您的manifest.toml中,添加以下权限。
[wants] [[wants.module]] id = /com.amazon.tve.adobe_sso_enabler@IAdobeSsoEnabler [[wants.service]] id = "com.amazon.tve.sso.companion.service"
用法
-
在应用代码中导入
TveAdobeSsoEnabler。import { TveAdobeSsoEnabler } from '@amazon-devices/tve-adobe-sso-enabler'; -
获取SSO令牌,然后使用该令牌或处理错误。
TveAdobeSsoEnabler.getSsoToken().then((token: string) => { // 处理令牌。 }).catch((error: string) => { // 处理错误。 });
注意: 在不使用SSO令牌的情况下,应用也可以使用Adobe的API进行身份验证。但是如果SSO令牌缺失或错误,则不能启用单点登录功能。这意味着用户必须分别登录每个TVE应用。
常见用例
以下示例代码展示了如何按照Adobe文档中的说明,使用SSO令牌获取配置文件。通过Adobe注册应用时,应用获得PROVIDER_NAME和MVPD_NAME。SSO令牌(存储在SsoToken字段中)是GetProfilesParams对象的一部分,可通过调用TveAdobeSsoEnabler.getSsoToken() 来检索该对象。
const ADOBE_GET_PROFILES_PATH = `/api/v2/%PROVIDER_NAME%/profiles/%MVPD_NAME%`;
const ADOBE_BASE_URL = 'https://sp.auth.adobe.com';
export interface GetProfilesParams {
accessToken: string;
ssoToken: string;
deviceIdentifier: string;
}
export interface GetProfilesResponse {
profiles: Record<string, Profile>;
}
export interface Profile {
notBefore: number;
notAfter: number;
issuer: string;
type: string;
attributes: Record<string, Record<string, string>>;
}
export async function getProfiles(params: GetProfilesParams) {
const url = new URL(ADOBE_GET_PROFILES_PATH, ADOBE_BASE_URL);
const response = await fetch(url, {
method: 'GET',
headers: {
Accept: 'application/json',
'Adobe-Subject-Token': params.ssoToken,
'AP-Device-Identifier': `fingerprint ${params.deviceIdentifier}`,
Authorization: `Bearer ${params.accessToken}`,
},
});
if (!response.ok) {
throw new Error('Bad response');
}
const payload: GetProfilesResponse = await response.json();
return payload;
}
故障排除
- 如果在调用
TveAdobeSsoEnabler.getSsoToken()函数后,应用收到“«package id» is not allowed”(«程序包ID»未获授权)错误,则说明应用未获得授权,无法检索SSO令牌。应用开发者应与亚马逊的解决方案架构师合作,对应用的软件包ID进行授权,然后等待24小时再重新尝试检索令牌。
相关主题
Adobe文档中的Adobe REST API V2 - API - 概述。
模块
Last updated: 2025年10月23日

