概述
当用户使用外部授权提供商(如Google或Facebook)注册我们的服务时,用户名将按照您的预期存储在Auth0'名称'字段中。但是,当用户使用他们的电子邮件地址注册时,他们的电子邮件地址将存储在“名称”字段中。
我们希望用户的真实姓名始终位于“名称”字段中,以便与其他第三方服务轻松集成。
研究
来自文档:https://auth0.com/docs/metadata
Auth0允许您存储与每个用户相关的元数据或数据 并非来自身份提供者。有两种 元数据:
user_metadata:存储用户属性(例如用户首选项) 不影响用户的核心功能; app_metadata:商店 信息(例如用户的支持计划,安全角色或访问权限) 控制组)可以影响用户的核心功能,例如 应用程序如何运行或用户可以访问的内容。
因此,我们可以将用户名存储在元数据中,然后在Auth0返回配置文件时检索它。这并不理想,因为它增加了不必要的复杂性。
来自官方论坛的问题: https://auth0.com/forum/t/editing-user-name/2944
用户问:
如果我在Auth0的数据库中存储用户,是否真的不可能 设置他们的真实姓名?好像它只接受电子邮件 地址。
获得回复:
可以存储此信息或任何其他信息 app_metadata或user_metadata。您可以通过修改此信息 仪表板,规则或API: https://auth0.com/docs/api/management/v2#!/Users/patch_users_by_id
基本上,文档或论坛上似乎没有关于如何解决此问题的任何内容。
我们终于找到了一种方法,可以使用用户个人资料返回用户的真实姓名。我已经在这里发布了答案,如果遇到这个问题,可以让其他开发人员的生活更轻松。
答案 0 :(得分:2)
<强>解决方案强>
基本上,如果您添加一个&#39;名称&#39;属性为用户的app_metadata,然后Auth0将使用该值作为用户的名称,两者都在仪表板上以及通过GET请求返回用户的配置文件时。
示例JSON:
"app_metadata": {
"name": "Sam Murray",
// Any other properties that you want to store
}
答案 1 :(得分:1)
我认为除了用户的核心身份验证字段之外,名字和姓氏已经折旧,将自定义系统/核心元数据添加到app_metadata并将所有其他相关数据存储在user_metadata中,例如名字和姓氏。我这样做,然后只有一个属性连接FullName属性。