如何在Auth0中存储用户全名而不是电子邮件地址?

时间:2017-01-07 18:12:49

标签: javascript oauth-2.0 auth0

概述

当用户使用外部授权提供商(如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

基本上,文档或论坛上似乎没有关于如何解决此问题的任何内容。

我们终于找到了一种方法,可以使用用户个人资料返回用户的真实姓名。我已经在这里发布了答案,如果遇到这个问题,可以让其他开发人员的生活更轻松。

2 个答案:

答案 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属性。