【问题标题】:auth0 - invalid user_metadata typeauth0 - 无效的 user_metadata 类型
【发布时间】:2017-04-07 00:13:54
【问题描述】:

我正在使用 Auth0 进行用户管理,并尝试在注册时添加一些默认的 user_metadata。我的注册码如下所示:

// signs a user up
signup(email, password, callback, metadata){
    const defaultVals = {
        app_complete: false,
        app_decision: 'unknown',
        app_term: this.getAppTerm(),
        nickname: '',
        middle_initial: '',
        current_age: '10',
    }

    const meta = Object.assign({}, defaultVals, metadata);

    console.log(meta);

this.auth0.redirect.signupAndLogin({
  connection: 'Username-Password-Authentication',
  email,
  password,
        user_metadata: meta,
}, function(err, authResult) {
  if (err != undefined) {
    callback(err);
            console.log(err);
            return;
  }
});}

问题是,每当我尝试传递 user_metadata 属性 app_complete: false 时,API 都会返回一个错误,指出数据类型 false 无效,并且只允许使用字符串。错误消息:无效的 user_metadata.app_complete 类型(只允许使用字符串)。

我知道 JSON 允许字符串以外的类型,因为我可以通过 Auth0 用户仪表板将其更改为 false。为什么auth0WebAuth 对象的注册方法会返回这个错误?

谢谢。

【问题讨论】:

    标签: reactjs auth0


    【解决方案1】:

    这是因为对于user_metadata 中的注册,您只能提供字符串作为值。

    The user metadata to be associated with the user. If set, the field must be an object containing no more than ten properties. Property names can have a maximum of 100 characters, and property values must be strings of no more than 500 characters.
    

    另一方面,PATCH 支持user_metadata 中的完整 JSON 类型。

    这是github auth0-js issue中的参考

    【讨论】:

      【解决方案2】:

      您可以在 signupAndLogin()(/dbconnections/signup 端点)方法中传递 user_metadata。但是,它有一些限制,如下所述。

      要与用户关联的用户元数据。如果设置,该字段 必须是包含不超过十个属性的对象。财产 名称最多可以有 100 个字符,并且属性值必须 是不超过 500 个字符的字符串。

      要解决此问题,请将属性值作为字符串传递。

      或者,代替在请求中传递 user_metadata,可以使用 auth0 规则并在第一次登录时更新 user_metadata

      function (user, context, callback) {
          var count = context.stats && context.stats.loginsCount ? context.stats.loginsCount : 0;
          if (count > 1) {
              return callback(null, user, context);
          }
      
          //update metadata 
          // https://auth0.com/docs/rules/guides/metadata#update-user_metadata
      
      
          callback(null, user, context);
      }
      
      

      【讨论】:

        猜你喜欢
        • 2017-09-29
        • 2018-05-20
        • 2017-10-04
        • 2021-08-08
        • 2017-07-11
        • 1970-01-01
        • 2017-10-18
        • 2017-01-24
        • 2018-06-24
        相关资源
        最近更新 更多