diff --git a/src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Userinfo.cs b/src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Userinfo.cs index c1657d1c..3af5c85e 100644 --- a/src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Userinfo.cs +++ b/src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationHandlers.Userinfo.cs @@ -212,6 +212,11 @@ public static partial class OpenIddictClientWebIntegrationHandlers context.Response = context.Registration.ProviderName switch { + // Fitbit returns a nested "user" object. + Providers.Fitbit => (JsonElement) context.Response["user"] + is { ValueKind: JsonValueKind.Object } element ? + new(element) : throw new InvalidOperationException(SR.FormatID0334("user")), + // StackExchange returns an "items" array containing a single element. Providers.StackExchange => (JsonElement) context.Response["items"] is { ValueKind: JsonValueKind.Array } element && element.GetArrayLength() is 1 ? diff --git a/src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationProviders.xml b/src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationProviders.xml index 3e820776..84f731c9 100644 --- a/src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationProviders.xml +++ b/src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationProviders.xml @@ -178,6 +178,33 @@ + + + + + + + + + + + + + + + + +