【问题标题】:Getting Payload Validation Error while creating User in Auth0在 Auth0 中创建用户时出现有效负载验证错误
【发布时间】:2021-11-16 01:22:24
【问题描述】:

我在创建 Auth0 用户时收到以下有效负载验证错误:

有效负载验证错误:'其他属性不允许:$type(考虑将它们存储在 app_metadata 或 user_metadata 中。有关详细信息,请参阅 https://auth0.com/docs/api/v2/changes 中的“用户元数据”)。

这是我发送的有效负载(已编辑的无关信息):

这就是我打电话的方式:

//Calling to Get the token, working fine!
var managementApiClient = new ManagementApiClient(await GetAccessTokenAsync(), _config.Domain);

// create the user in Auth0
var result = await apiRetryPolicy.ExecuteAsync(
    async () =>
        await managementApiClient.Users.CreateAsync(userCreateRequest)
);


return result;

客户端是用 C# 和 .Net Core 编写的 - 我在任何地方都找不到与此相关的主要内容是我在输入参数中发送 type

【问题讨论】:

  • 还没有答案!任何指导都会有所帮助!提前致谢!
  • 我已经关注了这个线程:stackoverflow.com/Questions/627356/…,并尝试了所有选项,包括从现有类型更改参数以将其分解为单个参数,但没有运气 - 得到相同的异常。基本上 CreateAsync() 是序列化我的对象并引入 $type。所以问题很清楚,需要找到如何确保它不这样做。
  • 您使用的是哪个版本的 .net core?
  • 您的 Json 设置是否可能生成 $type 属性?

标签: c# auth0 webapi


【解决方案1】:

Auth0 将Json.NET 用于序列化对象。我们可以在 Auth0 GitHub 存储库中看到(HttpClientManagementConnection 类)。

而且 Auth0 序列化设置看起来不错。但是由于某些原因,Serializer 生成了$type 属性。

为了生成$type 属性,Json.NET 使用了TypeNameHandling 序列化设置。

您的 JSON 序列化设置似乎已重新定义。尝试使用全局 JSON DefaultSettings 并将 TypeNameHandling 属性全局设置为 None

【讨论】:

    【解决方案2】:

    发送标头时,请确保它们正确,-d 选项将默认发送application/x-www-form-urlencoded 的内容类型

    最后你想通过 JSON 发送。而且,您还应该发送一个额外的标头:-H "Content-Type: application/json"

    在返回您的结果之前,请仔细检查其 JSON 格式,这可能会对您有所帮助,Auth0 Site

    【讨论】:

      猜你喜欢
      • 2016-10-15
      • 1970-01-01
      • 2019-04-10
      • 2018-09-19
      • 2020-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多