@amazon-devices/keplerscript-identity-lwa-lib
Kepler Login with Amazon (LWA) API提供了功能,让您可以利用Amazon.com使用的用户身份验证系统来保护您客户的信息。在将LWA添加到Kepler应用之前,必须为应用注册LWA。
要详细了解什么是LWA及其工作原理,请参阅Login with Amazon文档。
先决条件
以下列表显示了在将LWA添加到Kepler应用之前所需的事项。
- Kepler SDK已安装在您的计算机上。
- 亚马逊开发者账户。
- 现有的Kepler应用。您可以下载Vega视频示例应用,作为您的应用的模板。
- 您的应用必须已经注册Login with Amazon。有关更多信息,请参阅注册Login with Amazon。
- 您的应用的API密钥。有关更多信息,请参阅获取API密钥
- Kepler支持的Fire TV Stick。LWA不支持Kepler虚拟设备,因此您需要在一个设备上测试您的集成。
获取API密钥
要在您的应用中使用LWA,您需要提供应用的API密钥。API密钥是一个标识符,亚马逊授权管理器使用它向LWA授权服务识别您的应用。调试应用和生产应用需要不同的API密钥。您可以使用应用程序包ID以及应用MD5和SHA256签名生成API密钥。虽然应用的调试版本和生产版本的程序包ID相同,但您使用不同的过程来检索MD5和SHA256签名。要检索调试应用的签名,请参阅调试应用的MD5和SHA256签名。对于生产应用,请参阅生产应用的MD5和SHA256签名。
按照以下步骤创建API密钥并将其添加到您的LWA账户:
- 打开亚马逊应用商店开发者控制台并登录您的账户。
- 创建或打开现有的安全配置文件。有关更多信息,请参阅LWA文档。
- 为您的Kepler应用添加API密钥。
- 选择Android/Kindle设置。
-
转到添加API密钥。输入以下信息:
- API密钥名称 - 创建一个名称以标识您的应用。
- 程序包 - 输入程序包ID,例如
com.mycompany.myapp。 - MD5签名 - 输入MD5签名。
- SHA256签名 - 输入SHA256签名。
调试应用的MD5和SHA256签名
- 将Fire TV Stick连接到您的开发计算机。
- 打开终端shell并运行vda
devices命令。 - 确认输出中列出了设备序列号。
.
vda devices 连接设备的列表 G4N33M33333333TA device
- 打开终端shell并运行vda
- 在终端中,运行
vpm info <程序包名称>。替换 <程序包名称> 为您的应用的程序包名称。您可以在manifest.toml文件中找到程序包的名称。[package] id = "com.amazon.identity.lwa.authorizationmanager.service" ==> package_name - 找到签名信息。
-
在命令输出中,找到“Signers info”(签名者信息)部分。
-
挑选任意一位签名者,把其MD5和SHA256签名都记录下来。对于SHA256签名,输出中会有两行内容。用
:连接这两行。例如,如果输出中显示的SHA256是以下内容:17:6c:1b:d5:24:d6:0d:6c:e7:88:fd:9c:61:09:c2:01 b2:21:2a:79:66:10:c8:a7:74:64:11:d0:13:39:31SHA256的正确字符串是
17:6c:1b:d5:24:d6:0d:6c:e7:88:fd:9c:61:09:c2:01:b2:21:2a:79:66:10:c8:a7:74:64:11:d0:13:39:31
-
生产应用的MD5和SHA256签名
对于应用的发布或“生产”版本,您必须使用应用商店的MD5和SHA256签名创建额外的API密钥,并将其存储在应用的manifest.toml文件中。对于使用应用内购买 (IAP) 或动态应用测试 (LAT) 的应用,这也是必需的。
可以在开发者控制台中查找亚马逊应用商店证书哈希值,为现有应用创建API密钥。转到我的应用 > 选择应用的当前版本 > 上传您的应用文件> 亚马逊应用商店证书哈希值。
从API密钥中提取clientID
API密钥是一个JWT(JSON网络令牌)。您可以解码这个密钥以找到您的clientID,它将用于后端服务。
使用任何JWT解码工具来解码API密钥。
设置
-
将以下库依赖项添加到package.json文件的
dependencies部分。"dependencies": { "@amazon-devices/keplerscript-identity-lwa-lib": "~0.0" } -
在您的manifest.toml中,添加以下权限并将
api_key替换为您之前获得的API密钥。[wants] [[wants.service]] id = "com.amazon.identity.lwa.authorizationmanager.service" [[extras]] key = "api_key" value = "xyz"
使用IAP或LAT的应用对API密钥有单独的要求。有关详细信息,请参阅上面的生产应用部分。
用法
示例: 给用户授权
以下代码示例演示如何将Authorize调用集成到您的React Native组件中,以启动用户授权流程并获取访问令牌和用户详细信息。
import {
AuthorizationManager,
AuthorizeCallbacks,
AuthorizeCancellationReason,
AuthorizeSuccessParams,
GrantTypeName,
ScopeName
} from '@amazon-devices/keplerscript-identity-lwa-lib';
/**
* 定义回调函数来处理授权流程的结果。
*/
const authorizeCallbacks: AuthorizeCallbacks = {
// 授权成功时调用
authorizeSuccess: (authParams) => {
console.log('授权成功:', authParams);
// 处理成功的响应:
},
// 由于错误导致授权失败时调用
authorizeFailure: (error) => {
console.error('授权失败:', error);
// 处理失败场景:
},
// 当用户或系统取消授权时调用
authorizeCancel: (cancelReason) => {
console.log('授权已取消:', cancelReason);
// 处理取消:
}
};
// 步骤1: 定义您的授权请求参数。
const authorizeRequest: AuthorizeRequest = {
scopes: [
{ name: ScopeName.PROFILE }, // 请求用户的个人资料信息
{ name: ScopeName.POSTAL_CODE } // 请求用户的邮政编码。
],
// 可选: 仅在使用PKCE执行授权码流程时使用
// PKCE(代码交换证明密钥)提高了公共客户端的安全性。
// 例如,“AUTH_CODE”或“ACCESS_TOKEN”
// 如果未提供,则默认为“ACCESS_TOKEN”。
grantType: GrantTypeName.ACCESS_TOKEN,
codeChallenge: 'your-code-challenge', // <-- 替换为实际的PKCE代码挑战
codeChallengeMethod: 'your-code-challenge-method' // 例如,适用于SHA-256的S256,或者普通。
};
// 步骤2: 触发授权请求
AuthorizationManager.authorize(
authorizeRequest,
authorizeCallbacks
);
示例: 获取授权令牌
以下代码示例演示如何将GetToken调用集成到您的React Native组件中,以检索指定范围的授权令牌。
import {
AuthorizationManager,
GetTokenCallbacks,
} from '@amazon-devices/keplerscript-identity-lwa-lib';
// 定义回调函数来处理getToken操作的结果。
const getTokenCallbacks: GetTokenCallbacks = {
// 成功检索到令牌后,将调用此函数。
getTokenSuccess: function (access_token: any): void {
console.log('getTokenSuccess', JSON.stringify(access_token));
// 在此处放置任何逻辑以使用接收到的令牌,例如对API请求进行身份验证或进行安全存储。
},
// 如果令牌检索流程出现错误,则调用此函数。
getTokenFailure: function (category: any): void {
console.log('getTokenFailure', JSON.stringify(category));
// 在此处添加逻辑以处理令牌检索失败,例如显示错误消息或重试操作。
},
};
// 要开始令牌检索流程,请从AuthorizationManager调用getToken方法。
// 此方法采用上面定义的回调函数来管理成功和失败的结果。
AuthorizationManager.getToken(getTokenCallbacks);
示例: 获取用户详细信息
以下代码示例演示了如何将GetUser调用集成到您的React Native组件中,以获取和显示用户配置文件信息。
import {
AuthorizationManager,
GetUserCallbacks,
} from '@amazon-devices/keplerscript-identity-lwa-lib';
// 定义回调函数来处理getUser操作的结果。
const getUserCallbacks: GetUserCallbacks = {
// 成功检索到用户信息后,将执行此函数。
getUserSuccess: (userInfo) => {
console.log('检索到用户信息:', userInfo);
// 添加任何其他逻辑来处理用户信息,例如在用户界面上显示用户信息或存储用户信息以用于会话管理。
},
// 如果检索用户信息时出错,则调用此函数。
getUserFailure: (error) => {
console.error('检索用户信息失败:', error);
// 通过显示错误消息或采取适当的纠正措施来处理用户检索失败。
},
};
// 从AuthorizationManager调用getUser方法来触发用户配置文件检索流程。
// 此方法采用上面定义的回调函数来处理成功和失败的结果。
AuthorizationManager.getUser(getUserCallbacks);
示例: 让用户退出登录
以下代码示例演示了如何将Signout调用集成到您的React Native组件中,让用户可以安全地退出登录。
import {
AuthorizationManager,
SignOutCallbacks,
} from '@amazon-devices/keplerscript-identity-lwa-lib';
// 定义回调函数来处理注销流程的结果。
// 这些函数将在注销操作完成后调用。
const signOutCallbacks: SignOutCallbacks = {
// 如果注销成功,则执行此函数。
signOutSuccess: () => {
console.log('成功退出登录');
// 处理注销后操作的其他逻辑可以放置在此处,例如重定向用户或清除会话数据。
},
// 如果注销失败,则执行此函数。
signOutFailure: (error) => {
console.error('退出登录失败:', error);
// 在此处包含错误处理逻辑,例如向用户显示错误消息或重试操作。
},
};
// 要触发注销流程,请从AuthorizationManager调用signOut方法。
// 此方法会采用上面定义的回调函数。
AuthorizationManager.signOut(signOutCallbacks);
模块
- index
- turbo-modules/KeplerLWATurboModuleManager
- turbo-modules/KeplerLWATurboModuleManager
- turbo-modules/keplerLWATurboModules
- turbo-modules/keplerLWATurboModules
- types/LWADataTypes
- types/LWADataTypes
Last updated: 2025年10月3日

