【发布时间】:2017-05-22 08:14:58
【问题描述】:
概述
当用户使用外部授权提供商(例如 Google 或 Facebook)注册我们的服务时,用户名会按照您的预期存储在 Auth0“名称”字段中。但是,当用户使用他们的电子邮件地址注册时,他们的电子邮件地址会存储在“姓名”字段中。
我们希望用户的真实姓名始终在“姓名”字段中,以便与其他 3rd 方服务集成。
研究
来自文档: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
基本上,文档或论坛中似乎没有任何地方说明如何解决此问题。
我们终于想出了一种方法,让用户的真实姓名与用户个人资料一起返回。如果遇到此问题,我已在此处发布答案,以使其他开发人员的生活更轻松。
【问题讨论】:
标签: javascript oauth-2.0 auth0