as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
AWS
文档
Support
Contact Us
My Cases
新手入门
设计和开发
应用发布
参考
支持

@amazon-devices/tve-adobe-sso-enabler

@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调用中。

开始使用

先决条件

  1. 请按照Adobe的文档创建应用,用于身份验证、授权或权利验证流程。
  2. 与亚马逊的解决方案架构师合作,对应用的软件包ID进行授权,以获取SSO令牌。

授权

只有经亚马逊解决方案架构师授权的应用能访问此API提供的SSO令牌。在亚马逊解决方案架构师授权应用后,您可能需要等待长达24小时,然后API才能获取SSO令牌。

设置

  1. 将以下库依赖项添加到package.json文件的dependencies部分。

    已复制到剪贴板。

       "@amazon-devices/tve-adobe-sso-enabler": "~0.0.4",
    
  2. 在您的manifest.toml中,添加以下权限。

    已复制到剪贴板。

    [wants] 
    [[wants.module]] 
    id = /com.amazon.tve.adobe_sso_enabler@IAdobeSsoEnabler 
    
    [[wants.service]] 
    id = "com.amazon.tve.sso.companion.service"
    

用法

  1. 在应用代码中导入TveAdobeSsoEnabler

    已复制到剪贴板。

    import { TveAdobeSsoEnabler } from '@amazon-devices/tve-adobe-sso-enabler';
    
  2. 获取SSO令牌,然后使用该令牌或处理错误。

    已复制到剪贴板。

     TveAdobeSsoEnabler.getSsoToken().then((token: string) => {
       // 处理令牌。
     }).catch((error: string) => {
       // 处理错误。
     });
    

注意:​ 在不使用SSO令牌的情况下,应用也可以使用Adobe的API进行身份验证。但是如果SSO令牌缺失或错误,则不能启用单点登录功能。这意味着用户必须分别登录每个TVE应用。

常见用例

以下示例代码展示了如何按照Adobe文档中的说明,使用SSO令牌获取配置文件。通过Adobe注册应用时,应用获得PROVIDER_NAMEMVPD_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;
}

故障排除

  1. 如果在调用TveAdobeSsoEnabler.getSsoToken() 函数后,应用收到“«package id» is not allowed”(«程序包ID»未获授权)错误,则说明应用未获得授权,无法检索SSO令牌。应用开发者应与亚马逊的解决方案架构师合作,对应用的软件包ID进行授权,然后等待24小时再重新尝试检索令牌。

Adobe文档中的Adobe REST API V2 - API - 概述

模块


Last updated: 2025年10月23日