在 Auth0 中创建用户时出现有效负载验证错误
Posted
技术标签:
【中文标题】在 Auth0 中创建用户时出现有效负载验证错误【英文标题】:Getting Payload Validation Error while creating User in 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。
【问题讨论】:
还没有答案!任何指导都会有所帮助!提前致谢! 我已经关注了这个线程:***.com/Questions/627356/…,并尝试了所有选项,包括从现有类型更改参数以将其分解为单个参数,但没有运气 - 得到相同的异常。基本上 CreateAsync() 是序列化我的对象并引入 $type。所以问题很清楚,需要找到如何确保它不这样做。 您使用的是哪个版本的 .net core? 您的 Json 设置是否可能生成$type
属性?
【参考方案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
【讨论】:
以上是关于在 Auth0 中创建用户时出现有效负载验证错误的主要内容,如果未能解决你的问题,请参考以下文章
UnauthorizedError:身份验证时出现 jwt 格式错误的错误
在 SQL Server Management Studio 中创建存储过程时出现语法错误