定制用户体验
在一个凡事都在我们指尖的世界里,人们期望自己的经历能为他们量身定制。 无论我们是在网上进行面对面的对话还是购物,我们都希望只看到对我们适用的东西。 通过使用本逐步指南,您可以了解如何利用用户属性的强大功能,并使用 App ID真正捕获用户注意力。
场景
您是一家在线零售商的开发者,在食品方面具有专业性。 您的任务是为应用程序用户创建个性化体验。 您决定将精力集中在根据您对用户的了解创建有针对性的广告上。 因此,当用户注册应用程序时,您会向他们提出一些问题以及他们可以选择的答案。 例如,您可以提出以下问题:
你有什么饮食偏好吗?
- 我是素食主义者
- 我是个悲观主义者
- 我没有奶
- 我是无筋的
- 我是低人一等
然后,您可以将其答案映射到 特定属性,这些属性可用于将显示的广告作为目标。
虽然本教程是针对使用 Cloud Directory 的 Web 应用程序编写的,但属性可以在更广泛的意义上使用。 自定义属性可以是任何你想要的属性! 如果您不使用 100k 属性,并将其格式化为纯 JSON 对象,您就可以存储所有类型的信息。
准备工作
准备好了吗 让我们开始吧!
开始之前,确保您已满足以下先决条件:
- App ID 服务的实例
- 一组服务凭证
配置 App ID 实例
在开始为用户添加属性之前,您需要配置 App ID 实例。
-
在服务仪表板的身份提供者选项卡中,启用 Cloud Directory。 虽然本教程的重点是 云目录,但您也可以选择使用任何其他IdP's,如 SAML、Facebook、 Google 或 自定义提供商。
-
在 云目录> 电子邮件验证 选项卡中,启用验证,并将 允许用户登录应用程序而不首先验证其电子邮件地址 设置为 是。
-
可选择在 “配置文件”选项卡中将“从应用程序更改自定义属性” 设置为“已启用”。 此操作允许用户在回答初始问卷后更新其属性。
太棒了! 仪表板已配置完成,您可以开始设置属性了。
创建用户属性
当用户与问卷交互时,您可以将其答案映射到特定属性,然后将这些属性添加到其文件中。
应用程序负责将答案映射到要添加到概要文件的特定属性。
-
使用该属性更新概要文件。
curl --request PUT \ https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/users/<userID>/profile \ --header 'Authorization: Bearer <IAMToken>' \ --header 'Content-Type: application/json' \ -d '{ "profile": { "attributes": { “food-preference”: “vegetarian, glutten-free” } } }'
-
查看概要文件以验证它是否已正确更新。
curl --request GET https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/users/<userID>/profile \ --header 'Authorization: Bearer <IAMToken>' \ --header 'Content-Type: application/json'
成功响应输出:
{ "id": "5ce78e09-1356-4ef8-a45d-808b633101db", "identities": [], "attributes": { "food-preference": "vegetarian, gluten-free" } }
非常好!
将属性注入令牌
越来越受欢迎,您决定实施“一天交易”。 您希望用户在登录到您的应用程序时看到的第一件事是与他们的饮食偏好相匹配的优惠券。 您可以通过将其概要文件中存储的属性注入其令牌来实现此目标。 通过使信息在运行时可用,您可以让应用程序当场做出有关要显示的交易的定制决策。
令牌配置 是全局的,这意味着它适用于具有相同属性的每个用户。
-
对令牌配置端点发出请求。
curl --request PUT \ https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/tokens \ --header 'Authorization: Bearer <IAMToken>' \ --header 'Content-Type: application/json' \ -d '{ "access": { "expires_in": 3601 }, "refresh": { "enabled": false, "expires_in": 2592001 }, "anonymousAccess": { "expires_in": 2592001 }, "accessTokenClaims": [ { "source": "attributes", "sourceClaim": "food-preference" } ] }'
令牌配置变量 变量 描述 tenantID
租户标识用于在请求中识别 App ID 的实例。 您可以在仪表板的“服务证书”选项卡中找到您的 ID。 如果没有设置,可以按照控制台中的步骤创建证书。 source
将 accessTokenClaim
和idTokenClaims
的源设置为attribute
。sourceClaim
要映射到令牌的特定属性。 在这种情况下, food-preference
。expires_in
此值将应用于每种令牌类型,并且必须在每个请求中进行设置。 如果先前在控制台中设置了值,然后运行此请求,则请求中的值会覆盖先前设置的值。 请确保将到期时间设置为适合您配置的正确值。 成功响应输出:
{ "access": { "expires_in": 3601 }, "refresh": { "enabled": false, "expires_in": 2592001 }, "anonymousAccess": { "expires_in": 2592001 }, "accessTokenClaims": [ { "source": "attributes", "sourceClaim": "food-preference" } ] }
查看访问令牌
(可选)可以通过查看访问令牌来验证步骤 4 是否成功。
-
出于测试目的,请使用 App ID GUI 来创建 Cloud Directory 用户。
- 在用户选项卡中,单击添加用户。 这将显示一个表单。
- 输入名字和姓氏、电子邮件和密码。
- 单击保存。
-
对您的客户端标识和私钥进行编码。
- 在 App ID GUI 的服务凭证选项卡中,复制您的客户端标识和私钥。
- 使用 Base64 编码器对这些授权信息进行编码。
- 复制输出以用于以下命令。
不建议在生产应用程序中使用基于浏览器的编码器。
-
使用 API 登录以获取访问令牌信息。 返回的令牌已编码。
curl --request PUT \ https://appid.cloud.ibm.com/oauth/v4/<tenantID>/token \ --header 'Authorization: Basic {<encodedClient>:<secret>}' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header `Accept: application/json` -d 'grant_type=password&username=<userEmail>%40<userEmailDomain>&password=<userPassword>
-
对访问令牌进行解码。
- 复制先前命令的响应输出中的令牌。
- 在浏览器中,导航至 https://jwt.io/。
- 将令牌粘贴到标注为已编码的框中。
不建议在生产应用程序中使用基于浏览器的解码器。
-
在解码部分,确认您可以看到食物偏好。
{ "iss": "https://us-south.appid.cloud.ibm.com/oauth/v4/39a37f57-a227-4bfe-a044-93b6e6050a61", "exp": 1551903163, "aud": [ "968c2306-9aef-4109-bc06-4f5ed6axi24a" ], "sub": "2b96cc04-eca5-4122-a8de-6e07d14c13a5", "email_verified": true, "amr": [ "cloud_directory" ], "iat": 1551899553, "tenant": "39a37f57-a227-4bfe-a044-93b6e6050a61", "scope": "openid appid_default appid_readprofile appid_readuserattr appid_writeuserattr appid_authenticated" "food-preference": "vegetarian, gluten-free" }
后续步骤
非常棒! 您已完成本教程。 接下来,可以尝试配置多因子认证或设置您自己的品牌 GUI。