与您现有的账户系统集成

与您现有的账户系统集成

本节将讨论如何将Login with Amazon用户账户的客户个人资料数据集成到已存在账户管理系统的移动应用。您将学习如何让用户在您的网站或应用中使用亚马逊账户进行登录,以及如何为现有用户附加亚马逊身份,以便其使用亚马逊凭证完成登录。

先决条件

本指南假定您之前已注册Login with Amazon、您的移动应用已注册为Login with Amazon应用,并具有与Login with Amazon服务进行通信的适当SDK或服务器端方法。

本指南假定您目前的移动应用具有以下功能:

  1. 记录每个用户账户信息的账户数据库。
    • 具有唯一标识符的用户。
    • 用户当前使用用户名/密码进行登录。
  2. 注册用户的登录页面。
  3. 需要提供个人资料信息(名称、电子邮件等)的新用户注册页面。
  4. 用户成功登录后的身份验证状态管理机制,以便下一页面知晓用户已成功登录(例如,Cookie或后端数据库存储机制)。

更改数据库

您需要修改账户数据库来记录亚马逊账户标识符与本地账户之间的映射。可以在账户表格中添加新字段或者新建表格,以此记录亚马逊账户标识符和本地账户标识符之间的映射。

亚马逊账户标识符将作为user_ID属性进行返回,具体形式为amzn1.accountVALUE。例如:amzn1.account.K2LI23KL2LK2

设置Login with Amazon

使用适合移动应用的SDK或服务器端方法,能够为用户提供使用亚马逊凭证登录的方式。具体包括更改登录和注册页面的UI。您的登录页面需要向用户提供一个可以选择“Login with Amazon”按钮的选项,以便他们使用亚马逊凭证进行身份验证。有关更多信息,请参阅iOS

获取并保护亚马逊客户个人资料数据

用户与Login with Amazon服务交互进行登录(首次访问、授权数据共享)时,您将立即收到Login with Amazon的授权响应。接收到授权响应后,您应该执行以下操作:

  1. 使用HTTPS将授权响应中的访问令牌发送到您的服务器。
  2. 使用访问令牌从服务器端调用profile终端节点。请参阅获取客户个人资料信息,以了解更多调用profile终端节点的详细内容,比如多种语言的代码示例。Login with Amazon返回的客户个人资料响应中包含多种值(如user_idemailname和/或 postal_code),您可以将其保留在服务器中。此步骤将确保您保存到服务器的个人资料数据属于登录到您客户端的客户。
  3. 在您的用户数据库中搜索用户的亚马逊账户标识符,查看其是否在之前登录过。如果没有,则需要为其创建一个新的账户。
  4. 在您的账户系统中搜索用户的电子邮件地址。如果用户拥有此电子邮件地址的本地账户,提示他们输入该凭证来允许Login with Amazon登录此账户。
  5. 在用户浏览器中创建Cookie,或以其他方式记录他们已在您的网站或应用中完成身份验证。

查找或创建本地账户

用户个人资料响应中始终包含一项名为user_id的参数。此参数中的值是用来识别用户所登录亚马逊账户的唯一字符串,其永久不变。亚马逊为每个用户始终返回同一标识符。

搜索您的用户数据库,查看此亚马逊账户是否曾在之前登录过您的网站或应用。如果此亚马逊账户并未在之前出现过,且与现有账户不匹配,那么您需要在本地账户数据库中创建一条新条目,并关联其亚马逊账户标识符,以方便用户下次登录。如果亚马逊账户与现有的本地账户相匹配,则提示用户输入本地密码以连接两个账户。

身份验证响应可能包含其他用户数据。例如,用户名和电子邮件地址。您可以在创建新账户或更新现有账户(例如,用户在上次登录后可能更改了电子邮件地址)时,将此信息复制到您的本地账户数据库。

如果您在创建账户前需要向用户收集其他信息,则应向用户显示注册页面。您可以在注册页面预先填写身份验证响应中收到的信息,也可以仅显示其他需要填写的字段。

将用户标记为已完成身份验证

在收到有效的身份验证响应、找到相应账户或在您自己的账户数据库中创建相关账户后,将此用户标记为已进行身份验证。此步骤与您当前身份验证系统的运行方式完全相同。