使用适用于iOS的Amazon登录入门指南
使用Amazon登录:iOS入门指南
版权所有©2016 Amazon.com,Inc.或其附属公司。 版权所有。
亚马逊和亚马逊徽标是Amazon.com,Inc.或其附属公司的商标。 非亚马逊所有的所有其他商标均为其各自所有者的财产。
iOS入门
在本指南中,我们将向您展示如何将“使用Amazon登录”添加到您的iOS应用。 完成本指南后,您应该在应用程序中拥有一个可用的“使用亚马逊登录”按钮,以允许用户使用其亚马逊凭证登录
安装Xcode
Amazon提供了适用于iOS的Amazon登录SDK,以帮助您将Amazon登录添加到您的iOS应用程序中。 该SDK旨在与Xcode开发环境一起使用。 该SDK支持使用ARMv7.0,ARMv7s,ARM7,i64和x386_86在iOS 64及更高版本上运行的应用程序。
您可以从Mac App Store安装Xcode。 有关更多信息,请参见 Xcode:新增功能 在developer.apple.com上。
安装Xcode之后,您可以 使用适用于iOS的Amazon SDK安装登录名 和 运行 Samp乐应用,如下所述。
使用适用于iOS的Amazon SDK安装登录名
Login with Amazon SDK for iOS 有两个包。 第一个包含 iOS 库和支持文档。 第二个包含为amp允许用户登录和的应用程序 view 他们的亲file 数据。
如果尚未安装Xcode,请参阅 安装 Xcode 请参阅上面的内容。
- 下载 使用AmazonSDKForiOS.zip登录 并提取 files 到硬盘驱动器上的目录。
你应该看到一个 LoginWithAmazon.framework 目录。 这包含“使用Amazon登录”库。
在拉链的最上层是 用Amazon.doc登录 设置目录。 这包含API文档。 - 看 使用Amazon Library安装登录名 有关如何将库添加到iOS项目的说明。
安装用于iOS的Amazon SDK登录后,您可以 使用Amazon Project创建新的登录名 后 通过Amazon登录进行注册。
运行 Samp乐应用
运行 sample应用程序,打开sampXcode 中的文件。
- 下载 SampleLoginWithAmazonAppForiOS.zip 并复制
SampleLoginWithAmazonAppForiOS 目录添加到您的 Documents 文件夹。 - 启动Xcode。 如果“欢迎使用 Xcode”对话框弹出,请单击“打开其他”。 否则,从主菜单中,单击 File 并选择 打开。
- 选择文档文件夹,然后选择
SampleLoginWithAmazonAppForiOS/LoginWithAmazonSample/ LoginWithAmazonSampxcodeproj文件。 点击 打开。 - 在Samp文件项目现在应该加载。 完成后,选择 产品 从主菜单中选择 跑步
通过Amazon登录注册
在您使用 Login with Amazon 之前 web您必须使用 Login with Amazon 注册一个应用程序。您的 Login with Amazon 应用程序是包含有关您的业务的基本信息以及有关每个帐户的信息的注册信息。 web您创建的支持“使用 Amazon 登录”的网站或移动应用。每次用户在您的网站上使用“使用 Amazon 登录”时,都会向用户显示此业务信息。 web网站或移动应用程序。 用户将看到您的应用程序名称、您的徽标以及指向您的隐私政策的链接。 这些步骤演示了如何使用 Amazon 应用程序注册 Login 并将 iOS 应用程序添加到该帐户。
请参阅以下主题
- 使用Amazon Application注册您的登录名
- 将 iOS 应用程序添加到 Security Profile
- iOS套件ID和API密钥
o确定iOS应用程序的捆绑包标识符
o检索iOS API密钥
使用Amazon Application注册您的登录名
- 转至 https://login.amazon.com.
- 如果您之前已经注册过使用Amazon登录的权限,请单击 应用控制台。 否则,请单击 报名。
您将被重定向到Seller Central,该中心负责处理通过Amazon登录的应用程序注册。 如果这是您第一次使用Seller Central,则会要求您设置一个Seller Central帐户。 - 点击 注册新应用程序。 这 注册您的应用程序 表格将出现:
a. 在“注册您的申请”表单中,输入名称和 描述 供您使用。
这 姓名 是用户同意与您的应用共享信息时在同意屏幕上显示的名称。此名称适用于 Android、iOS 和 web您的应用程序的站点版本。
b. 输入隐私权声明 URL 供您使用。
隐私权声明 URL 是您公司或应用程序的隐私政策的位置(例如amp乐,http://www.example.com/privacy.html)。 此链接会在同意屏幕上向用户显示。
c. 如果你想添加 徽标图像 对于您的应用程序,请单击 浏览 并找到适用的图像。
此徽标显示在登录和同意屏幕上以代表您的业务或 web地点。 大于50像素的logo会缩小到50像素的高度; 标志的宽度没有限制。 - 点击 节省。 你的amp注册文件看起来应该类似于:
保存基本应用程序设置后,您可以添加特定设置 web将使用此 Login with Amazon 帐户的站点和移动应用程序。
如果您的应用程序的不同版本具有不同的捆绑软件ID,例如一个或多个测试版本以及生产版本,则每个版本都需要自己的API密钥。 来自 iOS 设置 在您的应用程序中,点击 添加API密钥 按钮可为您的应用创建其他密钥(每个版本一个)。
将 iOS 应用程序添加到 Security Profile
保存基本应用程序设置后,您可以添加特定设置 web将使用此 Login with Amazon 帐户的站点和移动应用程序。
要注册iOS App,您必须为该应用程序项目指定Bundle标识符。 使用Amazon登录将使用捆绑包ID生成API密钥。 API密钥将授予您的应用程序访问“使用亚马逊登录”授权服务的权限。 请按照以下步骤将iOS应用添加到您的帐户:
- 在应用程序屏幕上,单击 iOS设置。 如果您已经注册了iOS应用,请查找 添加API密钥 按钮 iOS 设置 部分。
这 iOS应用 详细信息表单将出现:
- 输入 标签 您的 iOS 应用程序。 这不必是您的应用程序的正式名称。 它只是在应用程序中识别这个特定的 iOS 应用程序和 web使用亚马逊应用程序注册到您的登录名的网站。
- 输入您的 捆绑ID。 这必须与您的iOS项目的包标识符匹配。 要确定您的捆绑包标识符,请在Xcode中打开项目。 打开项目的属性列表( -Info.plist) 项目浏览器。 Bundle标识符是列表中的属性之一。
- 点击 节省。
iOS套件ID和API密钥
捆绑包标识符对于每个iOS应用程序都是唯一的。 使用Amazon登录使用捆绑ID来构造您的API密钥。 API密钥使“使用Amazon登录”授权服务可以识别您的应用程序。
确定iOS应用的捆绑包标识符
- 在Xcode中打开您的应用程序项目。
- 打开 信息属性表 为项目 ( -Info.plist) 在 项目浏览器。
- 寻找 捆绑包标识符 在属性列表中。
检索iOS API密钥
在注册iOS版本并提供捆绑ID之后,您可以从注册页面中检索API密钥,以用于您的“使用Amazon登录”应用程序。 您将需要将该API密钥放入项目的属性列表中。 除非您这样做,否则该应用将无权与“使用亚马逊登录”授权服务进行通信。
1. 前往 https://login.amazon.com.
2. 点击 应用控制台.
3. 在 应用程序 框,单击您的应用程序。
4.在下方找到您的iOS应用 iOS 设置 部分。 如果您尚未注册iOS应用,请参阅 将 iOS 应用程序添加到 Security Profile.
5. 点击 生成API密钥值。 弹出窗口将显示您的API密钥。 要复制密钥,请单击 选择全部 选择整个密钥。
笔记: API密钥值部分基于生成它的时间。 因此,您生成的后续API密钥值可能与原始API密钥值不同。 您可以在应用程序中使用这些API键值中的任何一个,因为它们都是有效的。
6. 看 将您的API密钥添加到您的应用属性列表 有关将API密钥添加到iOS应用的说明
使用Amazon Project创建登录名
在本部分中,您将学习如何为使用Amazon登录创建一个新的Xcode项目并配置该项目。
请参阅以下主题:
- 使用Amazon Project创建新的登录名
- 使用Amazon Library安装登录名
- 将您的API密钥添加到您的应用属性列表
- 添加 URL 方案到您的应用程序属性列表
- 将Amazon的应用程序传输安全例外添加到您的应用程序 物业清单
笔记: 在iOS 9 SDK上进行开发时,当前需要此新步骤 - 使用Amazon Button将登录名添加到您的应用程序
使用Amazon Project创建新的登录名
如果您还没有用于在Amazon上使用Login的应用程序项目,请按照以下说明进行创建。 如果您已有应用程序,请跳至下面的“使用Amazon库安装登录名”部分。
- 发射 Xcode。
- 如果您看到一个 欢迎使用Xcode 对话框中,选择 创建一个新的Xcode项目.
否则,从 File 菜单,选择 新的 和 项目。 - 选择您要创建的项目类型,然后单击 下一个。
- 输入 产品名称 和一个 公司标识符。 注意你的 捆绑标识符,然后点击 下一个。
- 选择一个存储项目的位置,然后单击 创造。
现在,您将有一个新项目,可用于调用“使用Amazon登录”。
使用Amazon Library安装登录名
如果尚未下载适用于iOS的Amazon SDK登录,请参阅 使用适用于iOS的Amazon SDK安装登录名.
“使用Amazon登录”项目必须链接 LoginWithAmazon.framework 和 安全框架 库。 您还需要配置框架搜索路径,以找到带有Amazon标头的登录名
- 在Xcode中打开项目后,选择 框架 文件夹,单击 File 从主菜单中,然后选择 添加 Files 到 “项目”。
- 在对话框中,选择 LoginWithAmazon.framework 和 点击添加。
如果您使用了Login with Amazon 1.0库,请从Frameworks文件夹中删除login-with-amazon sdk目录和login-with-amazon-sdk.a。 点击 编辑 从主菜单中选择 删除。 - 在中选择您的项目名称 项目浏览器。
这 项目编辑 将出现在Xcode工作区的编辑器区域中。 - 在下面单击您的项目名称 目标, 并选择 构建阶段。 展开“使用库链接二进制文件”,然后单击加号以添加库。
- 在搜索框中,输入 安全框架。 选择 Security.framework然后单击 添加。
- 在搜索框中,输入 SafariServices.framework。 选择 SafariServices.framework 并点击 添加。
- 在搜索框中,输入 核心图形框架。 选择 核心图形框架 并点击 添加
- 选择 构建设置. 点击全部到 view 所有设置。
- 在下面 搜索路径,确保 LoginWithAmazon.framework 目录在 框架搜索路径。
例如amp乐:
如果您使用了Login with Amazon 1.0库,则可以在以下位置删除对1.0库路径的所有引用: 标头搜索路径 or 图书馆搜索路径。 - 在主菜单中,单击 产品 并选择 建造。 构建应该成功完成。
在构建项目之前,如果您使用了Login with Amazon 1.0库,请替换 #import“ AIMobileLib.h”,#import“ AIAuthenticationDelegate.h”, or #进口 “ AIError.h” 在你的来源 file与 #进口
。
用Amazon.h登录 一次包含所有带有Amazon标头的Login。
将您的API密钥添加到您的应用属性列表
在通过“通过亚马逊登录”注册iOS应用程序时,会获得一个API密钥。 这是一个标识符,Amazon Mobile Library将使用该标识符将您的应用程序标识为“使用Amazon登录”授权服务。 Amazon Mobile Library在运行时从应用程序的信息属性列表中的API密钥属性值加载此值。
- 在您的项目打开的情况下,选择 支持 Files 文件夹,然后选择 -Info.plist file (在哪里 是您的项目的名称)。 这应该打开属性列表进行编辑:
- 确保没有选择任何条目。 然后,从主菜单中,单击 编辑, 和 新增项目。 进入 API密钥 并按 进入。
- 双击下面的 价值 列以添加值。 粘贴您的API密钥作为值。
添加 URL 方案到您的应用程序属性列表
当用户登录时,他们将看到一个Amazon登录页面。 为了使您的应用收到登录确认,您必须添加一个 URL 计划,使 web 页面可以重定向回您的应用程序。 这 URL 方案必须声明为 amzn- (例如amp乐, 亚马逊网站amp应用程序)。 有关更多信息,请参见 使用 URL 与应用进行通信的方案 在developer.apple.com上。
- 在您的项目打开的情况下,选择 支持 Files 文件夹,然后选择 -Info.plist file (在哪里 是您的项目的名称)。 这应该打开属性列表进行编辑:
- 确保没有选择任何条目。 然后,从主菜单中,单击 编辑, 和 新增项目。 输入或选择 URL 类型 并按 进入。
- 扩张 URL 类型 揭示 物品 0。 选择 物品 0 然后从主菜单中,单击“编辑器”和“添加项目”。 输入或选择 URL 标识符并按 进入。
- 选择 产品 0 在下面 URL 标识符 并在“值”列下双击以添加一个值。 该值是您的捆绑包ID。 您可以在属性列表中找到作为捆绑包标识符列出的捆绑包ID。
- 选择 产品 0 在下面 URL 类型 然后在主菜单中单击 编辑 和 新增项目。 输入或选择 URL 方案,然后按Enter。
- 选择 产品 0 在下面 URL 方案 并双击下面的 价值 列中添加一个 价值。 该值是您的捆绑包ID,其中包含 amzn- 前置(例如amp乐, 亚马逊网站amp应用程序)。 您可以找到列为的捆绑销售商ID 捆绑包标识符 在属性列表中。
将Amazon的应用程序传输安全例外添加到您的应用程序
物业清单
从 iOS 9 开始,Apple 强制实施应用传输安全 (ATS) 以确保应用和应用之间的安全连接。 web 服务。 Login with Amazon SDK 与之交互以交换信息的端点 (api.amazon.com) 尚不符合 ATS。 为 api.amazon.com 添加一个例外,以启用 SDK 和 Amazon 服务器之间的无缝通信。
- 在您的项目打开的情况下,选择 支持 Files 文件夹,然后选择 -Info.plist file (在哪里 是您的项目的名称)。 这应该打开属性列表进行编辑:
- 确保没有任何条目。然后,从主菜单中,单击 编辑, 和 添加项目。 输入或选择 NSApp传输安全 并按 进入.
- 扩张 NSApp传输安全 然后在主菜单中单击 编辑 和 添加项目。 输入或选择 NSExceptionDomains 并按 进入.
- 扩张 NSExceptionDomains 然后在主菜单中单击 编辑 和 添加项目。 输入amazon.com并按 进入.
- 扩张 亚马逊 然后在主菜单中单击 编辑 和 添加项目。进入 NSExceptionRequiresForwardSecrecy 并按 进入.
- 选择 NSExceptionRequiresForwardSecrecy 并双击下面的 价值 列以添加一个 类型 of 布尔值 和一个 价值 of 不。
使用Amazon登录提供了几个标准按钮,可用于提示用户从您的应用程序登录。 本部分提供了下载带有Amazon图像的正式Login并将其与iOS UIButton配对的步骤。
- 将标准的UIButton添加到您的应用程序。
有关如何向应用程序添加按钮的教程和信息,请参见 创建和配置 View 对象 和 立即开始开发 iOS 应用 在developer.apple.com上。 - 添加 内部润饰 名为方法的按钮的事件 点击登录按钮。 现在将实现留空。 这 创建和 配置 View 对象 和 立即开始开发 iOS 应用 apple.com上的文档包括添加按钮事件的步骤。
- 选择一个按钮图像。
咨询我们的亚马逊登录 风格准则 有关您可以在应用程序中使用的按钮的列表。 下载副本 LWA_for_iOS.zip file. 在 1x 和 2x 目录中找到您喜欢的按钮并从 zip 中提取它们。 如果要在 Selected 状态下显示按钮,请提取按钮的 _Pressed 版本。 - 将图像添加到您的项目。
a. 在Xcode中,加载您的项目,然后单击 File 从主菜单中选择 添加 Files 到“项目”。
b. 在对话框中,选择按钮图像 file(s) 您下载并单击 添加。
c. 这些按钮现在应该位于项目目录下的项目中。 将它们移至支撑 File文件夹。 - 将图像添加到您的按钮。
要为您的按钮启用图片,您可以修改按钮属性或使用 setImage:forState 上的方法 用户界面按钮 目的。 请按照下列步骤修改您的按钮的图像属性:
a. 打开您的应用的情节提要。
b. 通过单击或从情节提要中选择故事板中的按钮 View 控制器 场景树。
c. 在 实用工具 窗口,打开 属性检查器。
d. 在“属性”检查器的顶部,将“按钮的类型”设置为“系统”。
e. 在第二组设置中,为“状态配置”选择“默认”。
f. 在第二组设置中,下拉“图像”设置。
g. 选择您添加到项目中的Login with Amazon按钮图形。 不要选择2x版本:它将在高密度显示(Retina)设备上自动加载。
h. 为“背景”设置设置相同的图像。
i. 如果要指定按钮的按下版本,请为“状态配置”选择“选定”,然后将“图像”设置为按钮的_Pressed版本。
j. 如果需要,在情节提要板上,调整按钮的大小以容纳图像。
使用SDK for iOS API
在本部分中,您将代码添加到您的项目中,以使用“使用Amazon登录”登录用户。
请参阅以下主题:
- 处理登录按钮并获取专业版file 数据
- 在启动时检查用户登录
- 清除授权状态并注销用户
本节说明如何调用 authorizeUserForScopes:委托: 和 获取Profile:蜜蜂 登录用户并检索他们的专业file 数据。 这包括创建一个 onLoginButtonClicked:侦听器 您的“使用亚马逊登录”按钮。
- 将“使用Amazon登录”添加到您的iOS项目。 请参阅使用Amazon Library安装登录名。
- 使用Amazon API将登录名导入源 file.
要使用Amazon API导入登录名,请添加以下内容 #import 语句 到你的来源 file:#进口 - 创建 AMZNAuthorizeUserDelegate 类 实现
AIAuthenticationDelegate。
什么时候 authorizeUserForScopes:委托: 完成后,它将调用 requestDidSucceed: or requestDidFail: 实现对象的方法 AIA认证代理 协议。@interface AMZNAuthorizeUserDelegate:NSObject @结尾 有关详细信息,请参阅For more information, see 使用协议 在developer.apple.com上。
- 称呼 authorizeUserForScopes:委托: in onLoginButtonClicked。
如果您按照中的步骤 使用Amazon Button将登录名添加到您的应用程序,您应该有一个 onLoginButtonClicked:方法 链接到“使用Amazon登录”按钮。 用这种方法,调用 authorizeUserForScopes:delegate:to 提示用户登录并授权您的应用程序。
该方法将使用户能够通过以下方式之一登录并同意所请求的信息:
1.) 切换到 web view 在安全的环境中(如果设备上安装了 Amazon Shopping 应用程序)
2.) 切换到 Safari View 控制器(在 iOS 9 及更高版本上)
3.) 切换到系统浏览器(在iOS 8和更低版本上)
当将Amazon Shopping应用程序安装到设备时,第一个选项的安全上下文可用。 如果用户已经登录到Amazon Shopping应用程序,则登录页面将被跳过,从而导致 单点登录 (SSO) 经验。授权您的应用程序后,它会被授权用于一个或多个称为范围的数据集。 第一个参数是一个范围数组,范围包含您要从“使用Amazon登录”中请求的用户数据。 用户首次登录到您的应用程序时,系统会向他们显示您所请求并获得批准的数据列表。 使用Amazon登录当前支持三个范围: 赞成file, 其中包含用户名,电子邮件地址和Amazon账户ID; 赞成file:用户身份, 其中仅包含亚马逊帐户ID; 和 邮政编码, 其中包含用户的邮政编码。
第二个参数 authorizeUserForScopes:委托: 是实现 AIAuthenticationDelegate协议, 在这种情况下, AMZN授权用户委托 班级。–(IBAction)onLogInButtonClicked:(id)sender {
//进行对SDK的授权调用以获取安全的访问令牌
//为用户。
//在拨打第一个电话时,您可以指定最低基本
//需要的范围。//为当前用户请求两个范围。
NSArray * requestScopes =
[NSArray arrayWithObjects:@”亲file”,@”postal_code”, nil];AMZNAuthorizeUserDelegate *委托=
[AIMobileLib authorizeUserForScopes:requestScopes委托人:delegate];
[[AMZNAuthorizeUserDelegate分配] initWithParentController:self];将您的委托实现标头添加到类调用中
authorizeUserForScopes :。 例如amp乐:#import“ AMZNAuthorizeUserDelegate.h” - 创建一个 AMZNGetProfile代表。
AMZNGetProfile代表 我们为实现该类的类的名称
AIAuthenticationDelegate协议, 并将处理结果 获取Profile: 称呼。 喜欢 authorizeUserForScopes:委托:,getProfile: 支持 requestDidSucceed: 和 requestDidFail: 协议方法。 requestDidSucceed: 收到一个 API结果 与亲对象file 结果属性中的数据。 requestDidFail: 收到一个 错误 错误属性中包含有关错误信息的对象。
要从普通的类声明创建委托类,请导入
AIAuthenticationDelegate.hand 将协议添加到类头中的声明中 file:#进口@interface AMZNGetProfile委托:NSObject @end - 实施 requestDidSucceed:用于 你的 AMZNAuthorizeUserDelegate。 In requestDidSucceed :, 称呼 获取Profile: 检索客户亲file. 获取Profile:, 喜欢 authorizeUserForScopes:delegate :,使用AIAuthenticationDelegate协议。
–(void)requestDidSucceed:(APIResult *)apiResult {
//用户授权应用程序后的代码
//要求的范围。// 加载新的 view 带有用户识别信息的控制器
//,因为用户现在已成功登录。AMZNGetProfile委托*委托=
[[[AMZNGetProfile委托分配] initWithParentController:parentView控制器]自动释放];
[AIMobileLib getProfile:代表];
}将您的委托实现标头添加到类调用中 获取Profile:. 外汇amp乐:
#import“AMZNGetProfile代表.h” - 实施 requestDidSucceed: 为您的 AMZNGetProfile代表。
requestDidSucceed:有 两个主要任务:找回亲file 数据来自 APIResult, 并将数据传递到UI。
找回亲file 数据来自 APIResult, 访问结果属性。 为一个 获取Profile:回复, 该属性将包含用户 pro 的属性值字典file 特性。 亲file 属性是 名称,电子邮件, 和 USER_ID 为亲file 范围和
邮政编码 对于 邮政编码 范围。–(void)requestDidSucceed:(APIResult *)apiResult {
// 获取专业file 请求成功。 拆开专业版file 信息
// 并将其传递给父级 view 控制器NSString *名称= [((NSDictionary *)apiResult.result
objectForKey:@“名称”];
NSString * email = [(NSDictionary *)apiResult.result
objectForKey:@“电子邮件”];
NSString * user_id = [((NSDictionary *)apiResult.result
objectForKey:@“ user_id”];
NSString * postal_code = [(NSDictionary *)apiResult.result
objectForKey:@“ postal_code”];// 传递数据给 view 控制器
} - 实施 requestDidFail: 为您的 AMZNGetProfile代表。
requestDidFail: 包括一个 API错误 包含有关错误的详细信息的对象。 显示登录页面 一个假设的方法,将重置主要 view 控制器以显示 Login with Amazon 按钮。–(void)requestDidFail:(APIError *)errorResponse {
// 获取专业file 专业版请求失败file 范围。
//如果错误代码= kAIApplicationNotAuthorized,
//允许用户再次登录。
if(errorResponse.error.code == kAIApplicationNotAuthorized){
//显示授权用户按钮。
[父母View控制器 showLogInPage];
}
别的 {
//处理其他错误
[[[[用户界面警报View alloc] initWithTitle:@”” 消息:[NSString
stringWithFormat:@”消息错误:%@”,
errorResponse.error.message]委托:无
cancelButtonTitle:@“ OK” otherButtonTitles:nil] autorelease] show];
}
} - 实施 requestDidFail:用于 你的 AMZNAuthorizeUserDelegate。
–(void)requestDidFail:(APIError *)errorResponse {
NSString * message = errorResponse.error.message;
// 授权失败时的代码。 [[[[UIAlertView alloc] initWithTitle:@”” 消息:[NSString
stringWithFormat:@“用户授权失败,消息:%@”,errorResponse.error.message]委托:无
cancelButtonTitle:@“ OK” otherButtonTitles:nil] autorelease] show];
}10.实施 适用场合:开放式URL:sourceApplication:注释: 在您项目的类中 UI应用程序委托 通讯协定(预设为 AppDelegate 类 在您的项目中)。 当应用程序显示Amazon登录页面并且用户完成登录时,它将使用重定向到该应用程序。 URL 计划之前注册的应用。 该重定向传递给 适用场合:开放式URL:sourceApplication:注释:, 哪个返回 是的 如果 URL 已成功处理。 句柄打开URL:sourceApplication: 是一个SDK库函数,将处理通过Amazon重定向进行登录 URLs适合你。 如果 句柄打开URL:sourceApplication:返回YES, 然后 URL 被处理了。
–(BOOL)应用程序:(UIApplication *)应用程序
打开URL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
注解:(id)注解
{
//传递 url 到SDK来解析授权代码// url.
BOOL isValidRedirectSignInURL =
[AIMobileLib句柄打开URL:url
源应用程序:源应用程序);
if(!isValidRedirect标记URL)
返回否;
//应用可能也想处理 url 返回YES;
}笔记: 此方法在iOS 9中已弃用,但应包含在您的项目中,以维护对旧平台上用户的支持。 有关更多信息 适用场合:开放式URL:sourceApplication:注释:, 看 UIApplicationDelegate协议参考 在developer.apple.com上。
在启动时检查用户登录
如果用户登录到您的应用程序,关闭该应用程序,然后稍后重新启动该应用程序,则该应用程序仍有权检索数据。 用户不会自动注销。 在启动时,如果您的应用仍被授权,则可以向用户显示已登录。 本节说明如何使用
getAccessTokenForScopes:withOverrideParams:delegate: 查看该应用是否仍被授权。
- 创建一个 AMZNGetAccessTokenDelegate 班级。 AMZNGetAccessTokenDelegate 实现 这 AIA认证代理 协议,并将处理结果
getAccessTokenForScopes:withOverrideParams:delegate: 称呼。 AIA认证代理 包含两种方法 requestDidSucceed: 和 requestDidFail :。 requestDidSucceed: 收到一个 API结果 带有令牌数据的对象,而 requestDidFail: 收到一个 API错误 错误信息的对象。#进口 @interface AMZNGetAccessTokenDelegate:NSObject
@结尾
将您的委托实现标头添加到类调用中
getAccessTokenForScopes:withOverrideParams:delegate:。 外汇amp乐:#import“ AMZNGetAccessTokenDelegate.h” - 在应用启动时,致电
getAccessTokenForScopes:withOverrideParams:delegate: 查看应用程序是否仍被授权。 getAccessTokenForScopes:withOverrideParams:delegate: 检索 Login with Amazon 用于访问客户专业人士的原始访问令牌file. 如果方法成功,应用程序仍然被授权并调用 获取Profile: 应该成功。 getAccessTokenForScopes:withOverrideParams:delegate: 使用 AIA认证代理 协议的方式与 authorizeUserForScopes:委托:。 将实现协议的对象作为委托参数传递。–(void)checkIsUserSignedIn {
AMZNGetAccessTokenDelegate *委托=
[[[AMZNGetAccessTokenDelegate alloc] initWithParentController:self] autorelease];
NSArray * requestScopes =
[NSArray arrayWithObjects:@”亲file”,@”postal_code”, nil]; [AIMobileLib getAccessTokenForScopes:requestScopes withOverrideParams:nil delegate:delegate];
} - 实施 requestDidSucceed: 在你的 AMZNGetAccessTokenDelegate。 requestDidSucceed: 有一项任务:打电话 获取Profile:. 这个前任amp打电话 获取Profile: 使用您在上一节中声明的相同侦听器(请参阅步骤6-8)。
#import“AMZNGetProfile代表.h”
#进口–(void)requestDidSucceed:(APIResult *)apiResult {
//您使用访问令牌的代码在此处。//由于应用程序对我们的范围具有授权,因此我们可以
[AIMobileLib getProfile:代表];
//获取用户profile.
AMZNGetProfile委托*委托 = [[[AMZNGetProfile委托分配] initWithParentController:parentView控制器]自动释放];
} - 实施 requestDidFail: 在你的 AMZNGetAccessTokenDelegate。
requestDidFail: 包括一个 API错误 包含错误详细信息的对象。 如果您收到错误,您可以重置主 view 控制器以显示 Login with Amazon 按钮。–(void)requestDidFail:(APIError *)errorResponse {
//您的代码将处理访问令牌检索失败的情况。
//如果错误代码= kAIApplicationNotAuthorized,则允许用户
//重新登录。
if(errorResponse.error.code == kAIApplicationNotAuthorized){
//显示“使用Amazon登录”按钮。
}
别的 {
//处理其他错误
[[[[用户界面警报View alloc] initWithTitle:@”” 消息:[NSString
stringWithFormat:@“错误发生,消息:%@”,errorResponse.error.message]委托:无
cancelButtonTitle:@”OK” otherButtonTitles:nil] autorelease] show];
}
}
这 clearAuthorizationState: 方法会从中清除用户的授权数据 人工智能移动图书馆 本地数据存储。 用户必须重新登录才能让应用程序检索专业版file 数据。 使用此方法注销用户,或解决应用程序中的登录问题。
- 声明 AMZNLogoutDelegate。 这是一个实现
AIAuthenticationDelegate协议。 为了我们的目的,我们可以从 NSObject:
#进口 @interface AMZNLogoutDelegate NSObject
@结尾
将您的委托实现标头添加到类调用中 clearAuthorizationState :。 例如amp乐:
#import“ AMZNLogoutDelegate.h” - 称呼 clearAuthorizationState :。
当用户成功登录后,您可以提供注销机制,以便他们可以清除其授权数据。 您的机制可能是超链接或菜单项,但对于这种情况,前amp乐会创建一个 logoutButtonClicked方法 退出按钮。–(IBAction)logoutButtonClicked:(id)sender {
AMZNLogoutDelegate* 委托 = [[[AMZNLogoutDelegate alloc] initWithParentController:self] autorelease]; [AIMobileLibclearAuthorizationState:委托];
}唯一的参数 清除授权状态 是 AIA认证代理 实现 requestDidSucceed: 和 requestDidFail :。
- 实施 requestDidSucceed :。 清除用户信息后将调用此方法。 然后,您应将其显示为已注销。
–(void)requestDidSucceed:(APIResult *)apiResult {
//用户授权后的其他逻辑
//状态已清除。
[[[用户界面警报View alloc] initWithTitle:@"" message:@"User Logged out."
delegate:nil cancelButtonTitle:@”OK” otherButtonTitles:nil] show];
} - 实施 requestDidFail :。 如果由于某种原因无法从缓存中清除用户信息,则将调用此方法。 在这种情况下,您不应将其显示为已注销。
–(void)requestDidFail:(APIError *)errorResponse {
// SDK清除失败后的其他逻辑
// 授权状态。 [[[[UIAlertView alloc] initWithTitle:@”” 消息:[NSString
stringWithFormat:@“用户注销失败,并显示消息:%@”,
errorResponse.error.message]委托:无
cancelButtonTitle:@”OK” otherButtonTitles:nil] autorelease] show];
}
测试您的整合
在iOS设备或模拟器中启动您的应用程序,并确认您可以使用Amazon.com凭据登录。
笔记: 在iOS10模拟器上进行测试时,您可能会看到针对应用程序的错误消息APIKey对于authorizeUserForScopes请求无效,或者对于clearAuthorizationState请求的未知错误代码无效。 这是一个 苹果的已知错误 当SDK尝试访问钥匙串时发生。 在Apple解决该错误之前,您可以通过在应用程序目标的“功能”选项卡下为您的应用程序启用“钥匙串共享”来解决该问题。 此错误仅影响模拟器。 您可以在不使用任何替代方法的情况下,在实际的iOS10设备上进行测试。
使用iOS 2.1.2版的Amazon入门指南进行登录– 下载[优化]
使用iOS 2.1.2版的Amazon入门指南进行登录– 下载