使用适用于Android的Amazon登录入门指南
使用Amazon登录:Android入门指南
版权所有©2016 Amazon.com,Inc.或其附属公司。 版权所有。 亚马逊和亚马逊徽标是Amazon.com,Inc.或其附属公司的商标。 非亚马逊所有的所有其他商标均为其各自所有者的财产。
Android入门
在本指南中,我们将向您展示如何将“使用Amazon登录”添加到您的Android应用程序。 完成本指南后,您应在应用程序中拥有一个可用的“使用亚马逊登录”按钮,以允许用户使用其亚马逊凭证登录。
安装Android开发人员工具
适用于Android的“使用Amazon登录”将帮助您将“使用Amazon登录”添加到您的Android应用程序。 我们建议您将developer.amazon.com中的Android版Amazon SDK登录使用Android Studio。 但是,您也可以使用带有ADT的Eclipse插件。 有关如何安装Android Studio和设置Android SDK的步骤,请参见 获取 Android SDK 在developer.android.com上。
安装Android SDK后,找到 SDK 管理器 Android安装中的应用程序。 要开发使用Amazon登录的功能,您必须使用SDK Manager安装用于Android 2.2或更高版本(API版本8)的SDK Platform。 看 添加SDK程序包 在developer.android.com上获得有关使用SDK的更多信息
安装SDK后,请设置一个Android虚拟设备(AVD)以运行您的应用程序。 看 管理 虚拟设备 在developer.android.com上获得有关设置虚拟设备的说明。
设置开发环境后,您可以 使用适用于Android的Amazon SDK安装登录名 or 运行 Samp乐应用,如下所述。
使用适用于Android的Amazon SDK安装登录名
Login with Amazon SDK for Android 有两个包。 第一个包含 Android 库和支持文档。 第二个包含为amp允许用户登录并显示他们的专业的应用程序file 数据。
如果尚未安装Android SDK或Android开发工具,请参见 安装 Android开发人员工具 请参阅上面的内容。
- 下载 拉链 并提取 files 到硬盘驱动器上的目录。
你应该看到一个 文档 和一个 库 子目录。 - 打开 doc / index.html 到 view 使用 Amazon Android API 登录
- 看 使用Amazon Library安装登录名, 有关如何将库和文档添加到Android的说明
安装用于Android的Amazon SDK登录后,您可以 使用Amazon创建新登录名 项目, 后 通过Amazon登录注册 .
运行 Samp乐应用
运行 sample 应用程序,导入 samp文件进入 AndroidStudio 工作区(如果您使用的是 Eclipse,则还必须向工作区添加自定义调试密钥库。请参阅 添加自定义调试 Eclipse中的密钥库 以下部分)。 s 的 API 密钥amp应用程序使用要求工作区使用 s 随附的密钥库amp乐如果未安装自定义密钥库,用户将无法使用 s 登录amp乐如果您使用的是 AndroidStudio,密钥库将被自动提取。
- 下载 SampleLoginWithAmazonAppForAndroid-src.zip 并提取 files 到硬盘上的目录
- 启动Android Studio并选择 打开一个现有的Android Studio项目
- 浏览到 SampleLoginWithAmazonApp 解压下载的zip后得到的目录 file 在步骤
- 从 建造 菜单,点击 制作项目,然后等待项目完成
- 从 跑步 菜单,点击 跑步 然后点击 SampleLoginWithAmazonApp.
- 选择模拟器或连接的Android设备,然后单击 跑步.
在Eclipse中添加定制调试密钥库
如果您使用的是Eclipse,请按照以下说明添加自定义调试密钥库:
- 在 偏好设置 对话框中,选择 安卓 和 建造.
- 旁边 风俗 调试密钥库, 点击 浏览.
- 导航到 samp进入应用目录并选择 3p.密钥库,然后点击 OK.
通过Amazon登录注册
在您使用 Login with Amazon 之前 web您必须使用 Login with Amazon 注册一个应用程序。您的 Login with Amazon 应用程序是包含有关您的业务的基本信息以及有关每个帐户的信息的注册信息。 web您创建的支持“使用 Amazon 登录”的网站或移动应用。每次用户在您的网站上使用“使用 Amazon 登录”时,都会向用户显示此业务信息。 web网站或移动应用程序。 用户将看到您的应用程序名称、您的徽标以及指向您的隐私政策的链接。 这些步骤演示了如何使用 Amazon 应用程序注册 Login 并将 Android 应用程序添加到该帐户。
请参阅以下主题:
- 使用Amazon Application注册您的登录名
- 注册您的Android应用
- 添加适用于Amazon Appstore的Android应用
- 添加不带Appstore的Android应用
- Android应用签名和API密钥
- 确定Android应用签名
- 检索Android API密钥
使用Amazon Application注册您的登录名
- 转至 https://login.amazon.com.
- 如果您之前已经注册过使用Amazon登录的权限,请单击 应用控制台。否则,单击 报名。 您将被重定向到Seller Central,该中心将处理使用进行登录的应用程序注册。如果这是您首次使用Seller Central,则将要求您设置一个Seller Central帐户。
- 点击 注册新应用程序。 这 注册您的应用程序 表格将出现:
a. 在 注册您的应用程序 表格中,输入一个 姓名 和一个 描述 供您使用。
这 姓名 是用户同意与您的应用共享信息时在同意屏幕上显示的名称。此名称适用于 Android、iOS 和 web您的应用程序的站点版本。
b. 输入 隐私声明 URL 为您的应用
这 隐私声明 URL 是您公司或应用程序的隐私政策的位置(例如amp乐, http://www.example.com/privacy.html). 此链接在同意屏幕上显示给用户。
c. 如果你想添加 徽标图像 对于您的应用程序,请单击 浏览 并找到适用的图像。
此徽标显示在登录和同意屏幕上以代表您的业务或 web地点。 大于50像素的logo会缩小到50像素的高度; logo的宽度没有限制 - 点击 节省。 你的amp注册文件看起来应该类似于:
保存基本应用程序设置后,您可以添加特定设置 web将使用此 Login with Amazon 帐户的站点和移动应用程序。
注册您的Android应用
要注册Android应用,您可以选择通过Amazon Appstore注册应用(添加适用于Amazon Appstore的Android应用,第8)或直接通过Amazon登录(添加一个Android 没有Appstore的应用,第9)。 注册您的应用程序后,您将有权访问API密钥,该密钥将向您的应用程序授予对“使用亚马逊登录”授权服务的访问权限。
笔记:如果您打算在Android应用程序中使用Amazon Device Messaging,请联系 wa 支持@amazon.com 和:
- 您用于注册使用Amazon登录的Amazon帐户的电子邮件地址。
- 您用来注册Amazon Appstore的Amazon帐户的电子邮件地址(如果有)。
- 您的卖方中心帐户上的名称。 (在卖方中心上,点击 设置>帐户信息>卖家信息并使用 显示名称).
- 您的Amazon Appstore开发人员帐户上的名称。 (在“移动应用分发网站”上,点击 设置 > 公司 专业版file 并使用 开发人员名称或公司名称).
添加适用于Amazon Appstore的Android应用
以下步骤将向您的“使用亚马逊登录”帐户中添加一个Amazon Appstore应用程序:
- 在应用程序屏幕上,单击 Android 设置。 如果您已经注册了Android应用,请查找 添加API密钥 按钮 Android 设置
这 Android应用程序详细信息 表格将出现: - 选择 是的 回答“此应用程序是否通过Amazon Appstore分发吗?”的问题
- 输入 标签 您的 Android 应用程序。 这不必是您的应用程序的正式名称。 它只是在应用程序中识别这个特定的 Android 应用程序和 web使用亚马逊应用程序注册到您的登录名的网站。
- 添加您的 Amazon Appstore ID。
- 如果您对应用程序进行了自签名,请添加自签名信息。 这将允许您在开发过程中获得API密钥,而无需直接使用Appstore:
a. 如果您的应用程序未通过Amazon Appstore进行签名,请选择“是”以回答问题“此应用程序是否是自签名的?”。
这 Android应用程序详细信息 表格将展开:
b. 输入您的 包裹名字。
该名称必须与您的Android项目的程序包名称匹配。 要确定您的Android项目的程序包名称,请在您选择的Android开发者工具中打开该项目。
打开 AndroidManifest.XML 在Package Explorer中,然后选择 显现 标签。 第一个条目是包名称。
c. 输入应用 签名。
这是用于验证您的应用程序的 SHA-256 哈希值。 签名必须是由冒号分隔的 32 个十六进制对的形式(例如amp乐: 01:23:45:67:89:ab:cd:ef:01:23:45:67:89:ab:cd:ef:01:23:45:67:89:ab:cd:ef:01: 3:45:67:89:a b:cd:ef). 看 Android应用签名和API密钥 对于您可以用来从项目中提取签名的步骤。 - 点击 节省。
如果您的应用程序的不同版本具有不同的签名或程序包名称,例如一个或多个测试版本以及生产版本,则每个版本都需要自己的API密钥。 来自 Android 设置 在您的应用程序中,点击 添加API密钥 按钮可为您的应用创建其他密钥(每个版本一个)。
Android应用签名和API密钥
应用程序签名是SHA-256哈希值,在构建时会应用于每个Android应用程序。 Amazon使用应用程序签名来构造您的API密钥。 API密钥使Amazon服务可以识别您的应用程序。 如果您使用Amazon Appstore对您的应用程序进行签名,则会自动提供API密钥。 如果您不使用Amazon Appstore,则需要手动管理API密钥。
应用程序签名存储在密钥库中。 通常,对于Android应用程序,有一个调试密钥库和一个发行密钥库。 调试密钥库是由Eclipse的Android开发工具插件创建的,默认情况下使用。 您可以通过单击在Eclipse中找到调试密钥库的位置。 窗户,然后选择 首选项> Android>构建。 在该屏幕上,您还可以添加自己的调试密钥库。 对于Android Studio,从 建造 菜单,选择 编辑构建类型,然后转到 签名 标签,然后在 店铺 File 场地。
当您导出 Android 应用以创建已签名的 APK 时,通常会创建发布密钥库 file.
在导出过程中,如果要创建新版本的密钥库,则将选择其位置。 经过
默认情况下,它将与默认调试KeyStore放在同一位置。
如果您在开发过程中使用调试签名注册了应用程序,则在准备发布该应用程序时必须向该应用程序添加新的Android设置。 新的应用程序设置必须使用发布密钥库中的签名。
看 签署您的申请 有关更多信息,请访问developer.android.com。
确定Android应用签名
- 如果您有已签名的 APK file:
a. 解压 APK file 并提取 CERT.RSA。 (如有必要,您可以将APK扩展名重命名为ZIP)。
b. 在命令行中,运行:密钥工具 -printcert -file 认证证书 关键工具 位于 垃圾桶 Java安装目录。
- 如果您有密钥库 file:
a. 在命令行中,运行:keytool -list -v -alias -密钥库file名称> 密钥工具 位于Java安装的bin目录中。 别名是用于对应用程序进行签名的密钥的名称。
b. 输入密钥的密码,然后按 进入。 - 在下面 证书指纹 复制 SHA256 价值。
检索Android API密钥
注册 Android 设置并提供应用程序签名后,您可以从 Login with Amazon 应用程序的注册页面检索 API 密钥。 您需要将该 API 密钥放入 file 在您的 Android 项目中。 在您这样做之前,该应用程序将无权与 Login with Amazon 授权服务进行通信。
- 转至 https://login.amazon.com.
- 点击 应用控制台.
- 在 应用 左侧的框,选择您的
- 在下方找到您的Android应用 Android 设置 (如果您尚未注册Android应用,请参阅 添加适用于Amazon Appstore的Android应用).
- 点击 生成API密钥值。 弹出窗口将显示您的API密钥。 要复制密钥,请单击 选择全部 选择整个
笔记:API密钥值部分基于生成它的时间。 因此,您生成的后续API密钥值可能与原始API密钥值不同。 您可以在应用中使用这些API键值中的任何一个,因为它们都是有效的。 - 看 将您的API密钥添加到您的项目 有关将API密钥添加到Android的说明
使用Amazon Project创建登录名
在本部分中,您将学习如何为使用Amazon Login登录创建一个新的Android项目,配置该项目,以及向该项目添加代码以使用Login with Amazon登录用户。 我们将描述Android Studio的步骤,但是您可以将类似的步骤应用于您选择的任何IDE或Android开发工具。
请参阅以下主题:
- 使用Amazon Project创建新的登录名
- 使用Amazon Library安装登录名
- 为使用Amazon Library登录启用内容辅助
- 为您的应用设置网络权限
- 将您的API密钥添加到您的项目
- 删除 Samp应用自定义调试密钥库
- 处理活动的配置更改
- 将授权活动添加到您的项目
- 使用Amazon Button将登录名添加到您的应用程序
- 处理登录按钮并获取专业版file 数据
- 在启动时检查用户登录
- 清除授权状态并注销用户
- 同步调用Amazon Authorization Manager方法
使用Amazon Project创建新的登录名
如果您还没有用于在Amazon上使用Login的应用程序项目,请按照以下说明进行创建。 如果您已有应用程序,请跳至 使用Amazon Library安装登录名 .
- 发射 Android开发工具.
- 从 File 菜单,选择 新的 和 项目.
- 输入一个 应用程序名称 和 公司名称 为您的
- 输入 申请和公司名称 与您在“通过Amazon登录”注册应用程序时选择的软件包名称相对应。
如果您尚未注册应用,请选择一个 软件包名称 然后按照 通过Amazon登录注册 创建您的项目后的部分。 如果您的应用程序的软件包名称与注册的软件包名称不匹配,则使用Amazon调用登录将不会成功。 - 选择一个 最低要求的SDK API 8:Android 2(Froyo)或更高版本,然后单击 下一个.
- 选择您要创建的活动类型,然后单击 下一个.
- 填写相关详细信息,然后单击 结束.
现在,您的工作区中将有一个新项目,您可以使用它来调用Login with Amazon。
使用Amazon Library安装登录名
如果尚未下载适用于Android的Amazon SDK登录,请参阅 使用以下方式安装登录名 适用于Android的Amazon SDK (第 4 页)。
- 在Android开发者工具中打开项目后, 项目资源管理器 右键单击您的 项目.
- 如果一个文件夹叫 库 还不存在,创建
- 复制 用amazon-sdk.jar登录 file 从 File 系统,然后将其粘贴到 库 项目/应用程序下的目录。
- 右键单击 用amazon-sdk.jar登录,并检查 添加为库
在Eclipse中为Amazon Library登录启用Content Assist
要在Android项目中启用Eclipse内容辅助支持,需要使用 。特性 file. 有关内容辅助的更多信息,请参阅 内容/代码辅助 onhelp.eclipse.org。
要在Android项目中启用Eclipse内容辅助支持,需要使用 。特性 file. 有关内容辅助的更多信息,请参阅 内容/代码辅助 onhelp.eclipse.org。
- In Windows 资源管理器,导航至 文档 文件夹,以使用Android版Amazon SDK登录,并将该文件夹复制到
- 打开您的项目,转到 包资源管理器 并选择 库 点击 编辑 从主菜单中选择 粘贴。 您现在应该有一个 libs \ docs 目录。
- 选择 库 点击 File 从主菜单中选择 新的 和File.
- 在 新的 File 对话框,输入 用amazon-sdk.jar.properties登录 并点击 结束.
- Eclipse应该打开 用amazon-sdk.jar.properties登录 在文本编辑器中。 在文本编辑器中,将以下行添加到 file:
doc = docs - 从 File 菜单,点击 节省。
- 您可能需要重新启动Eclipse才能使更改生效
为您的应用设置网络权限
为了使您的应用程序使用“通过亚马逊登录”,它必须访问Internet并访问网络状态信息。 您的应用必须在Android清单中声明这些权限(如果尚未声明)。
笔记注意:以下过程步骤特定于在Eclipse中添加权限。 如果您使用的是Android Studio或其他IDE,则可以跳过下面所有已编号的步骤。 相反,请复制屏幕截图下方显示的代码行,然后将其粘贴到 AndroidManifest.xml file, 在应用程序块之外。
- In 包裹 探索者, 双击 xml.
- 在 权限 选项卡,点击 添加.
- 选择 使用权限 并点击 OK.
- 在 - 的右边 权限,找到 使用权限的属性
- 在 姓名 框中输入 允许。 互联网 或从下拉菜单中选择它。
- 在 权限 选项卡,点击 添加
- 选择 使用权限 并点击 OK.
- 在 姓名 框中输入 权限.ACCESS_NETWORK_STATE 或从下拉菜单中选择
- 从 File 菜单,点击 节省.
您的清单权限现在应具有以下值:
在 AndroidManifest.xml 标签,现在您应该在manifest元素下看到以下条目:
将您的API密钥添加到您的项目
当您通过“通过亚马逊登录”注册您的Android应用程序时,会获得一个API密钥。 这是一个标识符,Amazon Authorization Manager将使用该标识符将您的应用程序标识为使用Amazon登录服务授权。 如果您使用的是Amazon Appstore对您的应用程序进行签名,则Appstore将自动提供API密钥。 如果您未使用Amazon Appstore,则Amazon Authorization Manager会在运行时从 api_key.txt file 在 资产 目录。
- 如果您还没有API密钥,请按照中的说明进行操作 检索Android API密钥 (第 11 页)。
- 打开您的ADT项目,从 File 菜单,点击 新的 并选择 无标题文本 File. 您现在应该有一个文本编辑器窗口 file 命名 无题 1。 将您的API密钥添加到文本中
- 从 File 菜单,点击 另存为.
- 在 另存为 对话框中,选择 资产 项目目录作为父文件夹。 为了 File 姓名, 进入 TXT.
删除 Samp应用自定义调试密钥库
笔记注意:仅当您使用Eclipse时才需要执行此步骤;否则,请执行以下步骤。 如果您使用的是Android Studio,请跳过此部分。
如果您安装了 Login with Amazon for Android samp将应用程序导入您用于 Android 应用程序的同一个工作区,您可能为该工作区设置了自定义调试密钥库。 您需要清除自定义调试密钥库才能使用您自己的 API 密钥。
- 在主菜单中,单击 窗户 并选择 偏好设置.
- 在 偏好设置 对话框中,选择 安卓 和 建造.
- 清除 风俗 调试密钥库
- 点击 OK.
处理活动的配置更改
如果用户在登录时更改屏幕方向或更改设备的键盘状态,它将提示重新启动当前活动。 重新启动将意外退出登录屏幕。 为避免这种情况,您应该设置使用authorize方法的活动来手动处理那些配置更改。 这将防止重新启动活动。
- In 包裹 探索者, 双击 xml.
- 在 应用 部分,找到将处理登录亚马逊的活动(例如amp乐, 主要活动).
- 将以下属性添加到您在步骤2中找到的活动中:
android:configChanges =” keyboard | keyboardHidden | orientation” 或对于API 13或更高版本:
android:configChanges =” keyboard | keyboardHidden | orientation | screenSize” - 从 File 菜单,点击 节省
现在,当键盘或设备方向发生变化时,Android会调用 配置更改 活动的方法。 除非您要为应用程序处理这些配置更改的某个方面,否则您无需实现此功能
当用户点击 Login with Amazon 按钮时,API 将启动一个 web 浏览器向用户显示登录和同意页面。 为了使此浏览器活动正常工作,您必须将 AuthorizationActivity 添加到您的清单中。
- In 包裹 探索者, 双击 xml.
- 在 应用 部分,添加以下代码,替换“com.example.app”和您的应用程序包名称:
<活动机器人:名称=
“ com.amazon.identity.auth.device.authorization.AuthorizationActivity” android:theme =” @ android:style / Theme.NoDisplay” android:allowTaskReparenting =“ true” android:launchMode =“ singleTask”>
<action android:name=”android.intent.action.VIEW” />
<数据
安卓:主机=”com.example.app” android:scheme=”amzn” />
您的应用。 本部分提供了下载带有Amazon映像的正式Login并将其与Android ImageButton配对的步骤。
- 将标准的ImageButton添加到您的应用程序。
有关Android按钮和ImageButton类的更多信息,请参见 按钮 在developer.android.com上。 - 为您的按钮提供一个ID。
在按钮 XML 声明中,将 android:id 属性设置为 @+id/login_with_amazon。 对于前任amp乐:android:id =” @ + id / login_with_amazon” - 选择一个按钮图像。
咨询我们的亚马逊登录 风格准则 有关您可以在应用程序中使用的按钮的列表。 下载副本 LWA_Android.zip file. 为您的应用支持的每个屏幕密度(xxhdpi、xhdpi、hdpi、mdpi 或 tvdpi)提取您首选按钮的副本。 有关在 Android 中支持多种屏幕密度的更多信息,请参阅 替代布局 在developer.android.com上的“支持多屏”主题中。 - 复制相应的按钮图像 file到您的项目。
对于您支持的每种屏幕密度(xhdpi,hdpi,mdpi或ldpi),将下载的按钮复制到 分辨率/可绘制 该屏幕密度的目录。 - 声明按钮图像。
在按钮 XML 声明中,将 android:src 属性设置为您选择的按钮的名称。 对于前任amp乐:android:src =” @ drawable / btnlwa_gold_loginwithamazon.png” 6.加载您的应用程序,并确认该按钮现在具有“使用亚马逊登录”图像。 您应该验证该按钮对于支持的每种屏幕密度都能正确显示。
本节说明如何调用authorize和getProfile 用于登录用户并检索他们的专业人士的 APIfile 数据。 这包括在您的应用程序的 onCreate 方法中为您的 Login with Amazon 按钮创建一个 onClick 侦听器。
- 将“使用Amazon登录”添加到您的Android项目。 看 使用Amazon Library安装登录名 .
- 使用Amazon API将登录名导入源
要导入 Login with Amazon API,请将以下导入语句添加到您的源 file:导入com.amazon.identity.auth.device.AuthError; 进口
com.amazon.identity.auth.device.authorization.api。
AmazonAuthorizationManager; 进口
com.amazon.identity.auth.device.authorization.api。 AuthorizationListener; 导入com.amazon.identity.auth.device.authorization.api.AuthzConstants; - 初始化 AmazonAuthorizationManager。
您需要声明一个 亚马逊授权管理器 变量并创建该类的新实例。 创建新实例仅需要您当前的应用程序上下文和一个空捆绑包。 最好的初始化地方 亚马逊授权管理器 位于 onCreate 你的活动的方法。 对于前任amp乐: - 创建一个AuthorizeLiistener。
授权监听器 实现AuthorizatioinListener接口,并将处理 授权电话。 它包含三种方法:oinSuccess, onError, 和onCanceil。 每种方法都会收到一个Bundle或一个 验证错误 目的。私有类AuthorizeListener实现AuthorizationListener {
/ *授权已成功完成。 * /
@覆盖
public void onSuccess(捆绑响应){
}
/ *尝试授权应用程序时出错。
*/
@覆盖
公共无效onError(AuthError ae){
}
/ *授权在完成之前已被取消。 * /
@覆盖
公共无效onCancel(捆绑原因){
}
} - 称呼 AmazonAuthorizationManager.authorize。
在 点击 您的“使用亚马逊登录”按钮的处理程序,请调用授权以提示用户登录并授权您的应用程序。
此方法负责通过以下方式之一授权客户:- 切换到系统浏览器,让客户登录并同意请求
- 切换到 web view 在安全的上下文中,让客户登录并同意所请求的
#2 的这种安全上下文目前可用作 Android 设备上的 Amazon Shopping 应用程序。 亚马逊创建的运行 Fire OS 的设备(例如ample Kindle Fire、Fire Phone 和 Fire TV)始终使用此选项,即使设备上没有亚马逊购物应用程序。 因此,如果客户已经登录了 Amazon Shopping 应用程序,则此 API 将跳过登录页面,从而导致 单点登录 给客户的经验。
授权您的应用程序后,它即被授权用于一个或多个数据集,这些数据集称为 作用域. 第一个参数是一个范围数组,其中包含您从 Login with Amazon 请求的用户数据。 用户第一次登录您的应用程序时,他们将看到您请求并要求批准的数据列表。 Login with Amazon 目前支持三个范围:profile,其中包含用户的姓名、电子邮件地址和亚马逊帐户 ID; 赞成file:用户身份, 其中仅包含亚马逊帐户ID; 和 邮政编码, 其中包含用户的邮政编码。
调用授权的最佳方法是异步的,因此您不必阻塞UI线程或创建自己的工作线程。 打电话 同步授权 传递支持 AuthorizationListener接口 作为最后一个参数:私有AmazonAuthorizationManager mAuthManager; @覆盖
受保护的无效onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mAuthManager =新的AmazonAuthorizationManager(this,Bundle.EMPTY);//查找具有login_with_amazon ID的按钮
//并设置点击处理程序
mLoginButton = (Button) 找到ViewById(R.id.login_with_amazon);
mLoginButton.setOnClickListener(new OnClickListener(){
@覆盖
公共无效 onClick(View v){
mAuthManager.authorize(
新字符串[]{“亲file“,“邮政编码”},
Bundle.EMPTY,新的AuthorizeListener());
}
});
} - 创建一个 专业版file听众。
专业版file听众 是我们实现该类的类的名称 API侦听器 接口,并将处理结果 获取Profile 称呼。 API侦听器 包含两种方法: 成功 和onError(它不支持 取消 因为没有办法取消 获取Profile 称呼)。 成功 使用 pro 接收 Bundle 对象file 数据,而 错误 收到一个 验证错误 错误信息的对象。私人课程专业版file监听器实现 APIListener{ /* 获取Profile 成功完成。 */ @覆盖
public void onSuccess(捆绑响应){}
/* 尝试获取 pro 时出错file. */ @覆盖
公共无效onError(AuthError ae){
}
} - 实施 成功 为您的 AuthorizeListener。
In onSuccess, 称呼 AmazonAuthorizationManager.getProfile 检索客户亲file. 获取Profile, 像授权一样,使用异步侦听器接口。 为了 获取Profile, 该接口是 APIListener,不是AuthorizationListener。
/ *授权已成功完成。 * / @覆盖
public void onSuccess(捆绑响应){
mAuthManager.getProfile(新临file监听器());} - 实施 成功 你的 专业版file听众。
成功有 两个主要任务:找回亲file 响应 Bundle 中的数据,并将数据传递给 UI。 更新程序file数据 您的应用程序可以实现以显示专业版的假设功能file 细节。 setLoggedInState, 另一个假设功能,将指示用户已登录并为他们提供了一种 注销。
找回亲file 来自 Bundle 的数据,我们使用存储在 身份验证常量 班级。 这 成功 捆绑包包含专业版file BUNDLE_KEY.PRO 中的数据FILE 捆。
内亲file 捆绑,范围数据索引在 赞成FILE_KEY.NAME,专业版FILE_KEY.EMAIL,专业版FILE_KEY.USER_ID, 和 赞成FILE_KEY.POSTAL_CODE。 专业版FILE_KEY.邮政编码 仅在您要求 邮政编码 范围。@覆盖
public void onSuccess(捆绑响应){
// 从 Bundle Bundle pro 中检索我们需要的数据file捆绑 = response.getBundle(
AuthzConstants.BUNDLE_KEY.PROFILE.val);
字符串名称 = profile捆绑.getString(
身份验证常量FILE_KEY.NAME.val);
字符串电子邮件 = profile捆绑.getString(
身份验证常量FILE_KEY.EMAIL.val);
字符串帐户 = profile捆绑.getString(
身份验证常量FILE_KEY.USER_ID.val);
字符串邮政编码 = profile捆绑.getString(
身份验证常量FILE_KEY.POSTAL_CODE.val);
runOnUiThread(new Runnable(){@Override
公共无效run(){
更新程序file数据(姓名、电子邮件、帐户、邮政编码);
}
});
} - 实施 错误 为您的 专业版file听众。
错误 包括一个 验证错误 包含有关错误的详细信息的对象。/* 尝试获取 pro 时出错file. */ @覆盖
公共无效onError(AuthError ae){
/ *重试或将错误通知用户* /
} - 实施 出错时 你的 AuthorizeListener。
/ *尝试授权应用程序时出错。
*/
@覆盖
公共无效onError(AuthError ae){
/ *通知用户错误* /
} - 实施 取消 你的 AuthorizeListener。
因为授权过程向用户展示了一个登录屏幕(可能还有一个同意屏幕) web 浏览器(或 webview), 用户将有机会取消登录或离开 web 页。 如果他们明确取消登录过程, 取消 叫做。 如果 取消 调用,您将需要重置您的UI。/ *授权在完成之前已被取消。 * /
@覆盖
公共无效onCancel(捆绑原因){
/ *将UI重置为准备登录状态* /
}笔记: 如果用户离开浏览器中的登录屏幕或 web view 并切换回您的应用程序,SDK 不会检测到登录未完成。 如果您在登录完成之前检测到应用中的用户活动,您可以假设他们已离开浏览器并做出相应的反应。
在启动时检查用户登录
如果用户登录到您的应用程序,然后关闭该应用程序,然后再重新启动该应用程序,则该应用程序仍有权检索数据。 用户不会自动注销。 在启动时,如果您的应用仍被授权,则可以向用户显示已登录。 本节说明如何使用getToken来查看该应用程序是否仍然被授权。
- 创建一个 令牌侦听器。
令牌监听器 实现 API侦听器 接口,并将处理getToken调用的结果。 API侦听器 包含两种方法: 成功 和 错误 (不支持 取消 因为没有办法取消 获取令牌 称呼)。 成功 接收带有令牌数据的Bundle对象,而 错误 收到一个 验证错误 错误信息的对象。私有类TokenListener实现APIListener { / * getToken成功完成。 * / @覆盖
public void onSuccess(捆绑响应){
}
/ *尝试获取令牌期间发生错误。 * / @覆盖
公共无效onError(AuthError ae){
}
} - 在 开始时 您的活动方法,请致电 获取令牌 查看应用程序是否仍被授权。
获取令牌 检索原始访问令牌, 亚马逊授权管理器 用于访问客户专家file. 如果令牌值不为空,则应用程序仍被授权并调用 获取Profile 应该成功。 获取令牌需要 您在通话中要求的相同授权范围。
获取令牌支持 异步调用方式与 getPro 相同file,因此您不必阻塞 UI 线程或创建自己的工作线程。 要异步调用 getToken,请传递一个支持 API侦听器 接口作为最终参数。@覆盖
受保护的void onStart(){
超级启动
();mAuthManager.getToken(new String []{“亲file“,“邮政编码”},
新的
TokenListener());
} - 实施 成功 为您的 令牌侦听器。
成功有 两个任务:从捆绑包中检索令牌,如果令牌有效,则调用 获取Profile.
要从捆绑包中检索令牌数据,我们使用由 身份验证常量 班级。 这 成功 bundle 在 BUNDLE_KEY.TOKEN 值中包含令牌数据。 如果该值不为空,则此 examp打电话 获取Profile 使用您在上一节中声明的相同侦听器(请参阅步骤7和8)。/ * getToken成功完成。 * /
@覆盖
public void onSuccess(捆绑响应){
最终字符串authzToken =
response.getString(AuthzConstants.BUNDLE_KEY.TOKEN.val);
如果(!TextUtils.isEmpty(authzToken))
{
// 检索 profile 数据
mAuthManager.getProfile(新临file监听器());
}
}
clearAuthorizationState 方法将从 AmazonAuthorizationManager 本地数据存储中清除用户的授权数据。 用户必须重新登录才能让应用程序检索专业版file 数据。 使用此方法注销用户,或解决应用程序中的登录问题。
- 实施注销
当用户成功登录后,您应该提供一个注销机制,以便他们可以清除他们的亲file 数据和先前授权的范围。 您的机制可能是超链接或菜单项。 对于这个前任amp我们将创建一个 点击 按钮的方法。 - 在注销处理程序中,调用 clearAuthorizationState。 clearAuthorizationState 将删除用户的授权数据(访问令牌、专业版file) 来自当地商店。 清除授权状态 没有参数,除了 API侦听器 返回成功或
- 声明匿名 APIListener。
匿名类是声明要实现的新类的有用替代方法 APIListener。 看 处理登录按钮并获取专业版file 数据 (第17页) examp使 声明侦听器类。 - 实施 成功 在里面 API侦听器
什么时候 清除授权状态 成功后,您应该更新您的UI来删除对用户的引用,并提供用户可以用来再次登录的登录机制。 - 实施 错误 在里面 APIListener。
If 清除授权状态返回 错误,您可以让用户尝试再次注销。@覆盖
受保护的无效onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
/ *省略了先前的onCreate声明* /
//找到具有注销ID的按钮并设置点击处理程序
mLogoutButton = (Button) 找到ViewById(R.id.logout);
mLogoutButton.setOnClickListener(new OnClickListener(){
@覆盖
公共无效 onClick(View v){
mAuthManager.clearAuthorizationState(new
APIListener(){
@覆盖
public void onSuccess(捆绑结果){
//在用户界面中设置退出状态
}
@覆盖
公共无效onError(AuthError authError){
//记录错误
}
});
}
});
}
一些 亚马逊授权管理器 方法返回一个 Future 对象。 这允许您同步调用该方法,而不是将侦听器作为参数传递。 如果您确实使用了 Future 对象,则不应在 UI 线程上使用它。 如果您阻止 UI 线程超过五秒钟,您将收到 ANR(应用程序无响应)提示。 在处理登录按钮和获取 Profile 数据前amp乐 成功 方法 授权监听器 由创建的工作线程调用 AmazonAuthorizationManager。 这意味着使用该线程调用 getPiro 是安全的file 同步。 要进行同步调用,请从 获取皮罗file 到Future对象,然后调用 吉特法 在该对象上等待,直到方法完成。
Future.get 返回一个Bundle对象,其中包含一个 未来类型 的价值 成功,错误, or 取消。 如果方法成功,同一个包将包含 PROFILEpro 的 _KEY 值file 数据。 前任amp乐:
/ *授权已成功完成。 * / @覆盖 public void onSuccess(捆绑响应){ 未来<Bundle> 未来 = mAuthManager.getProfile(空值); Bundle result = future.get();//查看是否调用成功,获取profile 对象 future_type = result.get(AuthzConstants.BUNDLE_KEY.FUTURE.val); 如果(future_type == AuthzConstants.FUTURE_TYPE.SUCCESS) { 字符串名称 = result.getString( AuthzConstants.PROFILE_KEY.NAME.val); 字符串电子邮件 = result.getString( AuthzConstants.PROFILE_KEY.EMAIL.val); String account = result.getString(AuthzConstants.PROFILE_KEY.USER_ID.val); 字符串邮政编码 = result.getString( AuthzConstants.PROFILE_KEY.POSTAL_CODE.val); runOnUiThread(new Runnable(){@Override 公共无效运行(){ updateProfile数据(姓名、电子邮件、帐户、 邮政编码); } }); } 否则,如果(future_type == AuthzConstants.FUTURE_TYPE.ERROR) { //获取错误对象 AuthError authError = AuthError.extractError(result); / *使用authError诊断错误* / } |
使用适用于Android的Amazon登录入门指南– 下载[优化]
使用适用于Android的Amazon登录入门指南– 下载