匿名身份在移动sdk中是如何工作的
移动sdk有两种创建终端用户的方式。一种类型的最终用户是确认使用匿名身份。另一种类型的终端用户是通过身份验证JWT的身份。
注意这里术语的不同,即确认与通过身份验证.匿名终端用户是不受信任的,并且有一些访问限制。本文的其余部分假设您的SDK应用程序在Zendesk Support中配置为匿名身份。亚博
本文涉及的主题:
一个匿名的身份可以创建完全没有就我个人而言可识别的信息。UUID是在SDK中设置标识时创建的,用于标识用户。
术语表
UUID-通用唯一标识符
相关的文档
匿名标识的生命周期
匿名身份一直存在,直到发生以下事件之一:
- SDK发出的请求会导致401错误
- 标识在代码中更新
- 卸载应用程序,或清除应用程序的app-data
下面将更详细地描述每个事件。在这些事件发生后,标识将被删除。您创建的下一个标识将是一个新用户。
在网络请求中遇到HTTP错误
匿名身份的目标是让它们尽可能长时间地存在。如果标识的细节没有变化,那么不需要在Zendesk Support中创建新的终端用户。亚博401错误意味着最终用户不再有权访问所请求的资源。出现这种情况的原因有很多,比如终端用户被暂停。当401发生时,sdk会采取以下步骤:
- 从设备上删除用户的请求
- 删除存储的访问令牌(用于API调用)
- 生成一个新的UUID。
身份的变化
在改变身份时,sdk是非常严格的。我们不支持在不将其视为新标识的情况下向标识添加数据。这是一个常见的场景,我们的sdk的集成商可能在一开始不知道他们的用户,但是在他们登录过程之后他们就知道了。
考虑一下,如果你的开场白是这样的:
// Android:创建一个没有附加信息的身份
身份身份=新AnonymousIdentity();
亚博.实例.setIdentity(身份);
// iOS:创建一个没有附加信息的身份
让身份=身份.createAnonymous()
亚博.实例?.setIdentity(身份)
如果稍后执行以下操作,则SDK将此视为身份更改。它从设备上清除用户的数据。SDK考虑任何添加(没有电子邮件到有电子邮件)或任何更改((电子邮件保护)来(电子邮件保护))作为新身份。
// Android:更新身份的幼稚尝试
身份身份=新AnonymousIdentity.构建器()
.withEmailIdentifier("(电子邮件保护)")
.构建();
亚博.实例.setIdentity(身份);
// iOS:更新身份的幼稚尝试
让身份=身份.createAnonymous(电子邮件:"(电子邮件保护)")
亚博.实例?.setIdentity(身份)
请注意:如果您保持相同的电子邮件地址并更改其他内容,您最多只能更改1000个身份。示例:假设在启动应用程序时初始化一个匿名身份,其中电子邮件地址为(电子邮件保护)是硬编码的,但用户名是动态设置的。结果:每次不同的用户启动应用程序时,“(电子邮件保护)删除,并为“”创建一个具有不同名称的新标识。(电子邮件保护)".在1000次这样的身份更改之后,您将开始收到登录尝试失败的消息。
卸载App,或清除App数据
标识、请求和访问令牌本地存储在最终用户的设备上。如果应用程序被卸载,那么身份、请求、访问令牌和任何其他用户数据都将被清除。如果应用程序的数据被清除,也会发生同样的情况。
电子邮件,名称和解决策略
匿名身份允许指定一些可选的信息,但要弄清楚它实际上是如何工作的,可能会非常令人困惑。一般来说,总有两种情况需要考虑:
- 这是新用户吗?
- 这是一个现有用户吗?
这非常重要,因为如果它是一个现有用户,那么SDK就不会更新最终用户。举个例子。
创建新用户
假设您有一个电子邮件地址为的用户(电子邮件保护).他还不存在于Zendesk Support的实例中。亚博在你的应用程序中,你为他创建了一个匿名身份,并设置了他的电子邮件地址和姓名:
/ /安卓
身份身份=新AnonymousIdentity.构建器()
.withNameIdentifier(“约翰·史密斯”)
.withEmailIdentifier("(电子邮件保护)")
.构建();
亚博.实例.setIdentity(身份);
/ / iOS
让身份=身份.createAnonymous(的名字:“约翰·史密斯”,电子邮件:"(电子邮件保护)")
亚博.实例?.setIdentity(身份)
这个用户在Zendesk实例中还不存在,因此创建了一个用户,并将其名称和电子邮件地址设置为SDK提供的名亚博称和电子邮件地址。
正在尝试更新用户
在将来的某个时候,你可能想要更改用户的名称,所以你可以尝试这样做:
/ /安卓
身份身份=新AnonymousIdentity.构建器()
.withNameIdentifier(“乔安娜·史密斯”)
.withEmailIdentifier("(电子邮件保护)")
.构建();
亚博.实例.setIdentity(身份);
/ / iOS
让身份=身份.createAnonymous(的名字:“乔安娜·史密斯”,电子邮件:"(电子邮件保护)")
亚博.实例?.setIdentity(身份)
提示:
- 这被视为身份更改,所以上面“匿名身份的生命周期”中的所有内容都适用
- 电邮地址为“(电子邮件保护)已经存在了。
亚博Zendesk Support在创建终端用户之前会尝试查看终端用户是否存在。它通过查看通过匿名标识传递的可选信息来做到这一点。对于上述用户,Zendesk Support采取以下步骤:亚博
- 搜索“”(电子邮件保护)“电子邮件
- 查找现有的最终用户
- 为最终用户生成一个新的访问令牌
- 将用户名改为“John Smith”而不是“Joanna Smith”
亚博Zendesk Support在发现终端用户已经存在时不会更新该用户。这是安全措施。
以下是Zendesk Support使用的通用解决策略:亚博
- 通过电子邮件找到用户。
- 如果没有通过电子邮件找到该用户,请创建该用户。
如果通过电子邮件找到最终用户,则Zendesk Support将忽略该名称。亚博
经常遇到的问题
在匿名身份中要记住的最重要的事情是,所有信息都是完全可选的。我们的建议是只填写你知道你肯定有的细节。
如果需要对用户身份进行更多控制,可以考虑使用JWT身份验证。看到身份验证的决定在SDK集成检查表。