您在操作时是否已经遵循Adobe Primetime单点登录 (SSO) 集成文档,但没有达到预期效果?
用户面临的一个常见问题是,他们无法从应用中的MVPD列表中选择要登录的多頻道影音內容播送器 (MVPD)。另一种情况是,用户已成功登录选定的MVPD,但每次尝试在您的应用中播放内容时,都会被要求登录。
本篇博客中提供的技巧将帮助您克服这些问题。
Fire TV上的SSO概述
SSO允许在一个SSO应用中进行了身份验证的客户在登录另一个支持SSO的应用时无需再次进行身份验证。Adobe提供Primetime身份验证API,以便为Fire TV上的第三方TV Everywhere (TVE) 应用提供这种身份验证方式。
Adobe为Fire TV客户端开发者提供了一个具有其API的存根库。开发者需要使用Fire OS系统级API来检索个性化令牌,并在调用Adobe API时使用它。而且,Fire OS系统级API封装在Fire TV系统应用中,称为SSO配套应用。
下面是一组解释SSO工作流程的图表。
图中所示的是SSO工作流程中的4个关键步骤。
以下是对SSO流程中这些步骤中每一个的详细说明。
步骤1:初始化
在该步骤中,Android客户端应用启动Adobe Primetime身份验证原生Amazon Fire OS库 (AccessEnabler),该库已经与应用集成。它使用个性化令牌建立应用的标识,然后进入身份验证流程。
步骤2:身份验证
Android客户端应用现在会启动身份验证流,或者得到用户已经通过身份验证的确认。如果用户未通过身份验证,则会向用户显示MVPD提供方的列表。用户选择提供方后,将打开提供方页面供用户登录。用户成功登录后,将从后端Adobe服务器检索身份验证令牌。对令牌进行验证之后,用户进入授权流程。
步骤3:授权
Android客户端应用接下来获取授权令牌,然后验证身份验证令牌和授权令牌。这意味着检查用户是否通过身份验证并已获得授权而可观看所请求的媒体。如果存在身份验证 (AuthN) 错误,则重新启动身份验证流程。如果存在授权 (AuthZ) 错误,则用户无权观看所请求的媒体,并向用户显示相关的错误消息。如果授权成功,Adobe服务器将返回一个短媒体令牌。
步骤4:媒体令牌发放
接下来,由Adobe服务器验证从授权流返回的短时有效媒体令牌。如果验证成功,Android客户端应用将为用户播放请求的媒体。但是,如果验证失败,则AuthZ令牌无效,媒体请求被拒绝,并向用户显示错误消息。
现在您已经大致了解SSO流程的工作方式,下面我们来探讨一下您可能面临的一些问题以及如何解决这些问题。
提示1:应用未获得授权而无法在Fire TV上使用SSO
如上所述,一个常见的SSO错误是,当用户选择一个有效的MVPD提供方(见图中步骤2: 身份验证)进行登录以播放其内容时,他们不会看到MVPD提供方的登录页面,而是会回到提供方选择器页面。
用户遵照的是此工作流程中的权利步骤(另请参见图1:单点登录流程概览)。
您最初对用户身份验证的调用应使用有效凭证将用户成功登录到选定的MVPD,并将返回的身份验证令牌存储在后端服务器中。理想情况下,后续的身份验证调用应该得到用户已通过身份验证的确认,然后该用户应获得授权而可对应用使用单点登录。但是,这些调用失败,用户持续收到登录MVPD的要求。
此错误可能只是由于您的应用未获授权或未被允许在Fire TV平台上使用单点登录 (SSO)。
在图1中的工作流中,SSO配套应用在检查身份验证是否完成之前,会在后台检查应用是否列入允许列表,即该应用是否有权在Fire TV上使用SSO。如果未在该列表当中,将不会允许用户从MVPD列表显示页面进行后续操作。
要确定这是否确实是造成登录问题的原因,可以在设备日志中查找以下错误:
E/OttSso_OttSsoService: Trying to verify app com.yourappname.yourpackagename but Approved apps list size is 0.
此错误意味着您的应用需要获得授权才能在Fire TV平台上使用SSO。请与亚马逊的Fire TV解决方案架构师联系以获得授权。
一旦您的应用程序包名称获得了SSO的授权,您需要等待24小时才能刷新设备缓存。如果您仍然遇到相同错误,请检查程序包名称是否正确。请注意,调试程序包和生产程序包的名称都需要列入允许列表。
如果您仍然遇到相同的错误,则需要使用以下命令手动清除配套应用缓存:
adb shell pm clear com.amazon.tv.ottssocompanionapp
adb shell am force-stop com.amazon.tv.ottssocompanionapp
现在,当用户再次执行您的应用登录工作流时,他们将能够使用有效凭证成功登录,而不是在您的设备日志中出现E/OttSso_OttSsoService错误。以下行将出现在设备日志中,作为您的应用现在列入Fire TV允许使用SSO的应用列表的证据:
I OttSso_OttSsoService: app setup complete, number of approved apps
提示2:Adobe SDK和SSO配套应用版本不匹配
您的应用集成的Adobe SDK是一个存根库,它可以调用Fire TV上的SSO配套系统应用来提供SSO功能。要让您的应用在Fire TV上正确使用SSO,SSO配套应用和集成在您应用中的Adobe存根库都应始终为最新版本。
要通过ADB检查此应用的版本,请使用以下命令:
Mac:
adb shell dumpsys package com.amazon.tv.ottssocompanionapp | grep versionCode
Windows:
adb shell dumpsys package com.amazon.tv.ottssocompanionapp | find /I "versionCode"
结果:
旧版本输出:
在上述示例中,此特定设备上SSO配套应用的最后更新版本号为4810。但是,最新版本的Adobe SDK要求系统SSO配套应用的版本号为5510或更高。要更新SMP设备中的SSO配套应用,请转到设备的Settings(设置)-> My Fire TV(我的Fire TV)-> About(关于)-> Check for Updates(检查更新)。在Fire TV版本设备中,转到设备的Settings(设置)-> Device & Software(设备和软件)-> About(关于)-> Check for Updates(检查更新)。重复运行此命令,直至不再需要接收任何系统更新。当您再次运行adb版本命令时,结果应该如下:
为了防止您的应用用户因为最近没有更新其设备的操作系统而面临SSO问题,应用应执行版本检查,并促使用户更新其应用和设备操作系统。
有关单点登录的多信息,请参阅Adobe Primetime身份验证Fire TV SDK上的此文档。