Microsoft Graph SDK 不返回 Azure AD B2C 用户的自定义属性值

Microsoft Graph SDK not returning Custom attributes values of Azure AD B2C Users

我添加了一个新的自定义属性并在应用程序声明中 select编辑了它 注册登录用户流程。

所以我创建了一个新用户并在注册期间为此自定义属性设置了一个值。当我与用户一起登录时,该属性保留在令牌声明中,因此我可以从令牌中获取值。

所以现在我需要使用 Graph SDK 来获取它,我正在尝试使用受此 Microsoft Docs

启发的以下代码来实现
        ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);
        GraphServiceClient graphClient = new GraphServiceClient(authProvider);

        var customAttribute = $"extension_clientIdWithoutDash_CustomAttributeName";

        var result = await graphClient.Users["2d7f1b9d-b57c-4a1a-bf56-fa27a952bacf"]
            .Request()
            .Select(customAttribute)
            .GetAsync();

        var customAttributsAreHere = result.AdditionalData;

但是当我检查响应时,自定义属性不存在。如果我将它们包含在 select 中,默认属性就在那里。任何线索可能是什么原因?

这是我在将自定义属性请求为“extension_clientId_customattribute”时使用的客户端 ID。 (但没有连字符)

您必须使用通过您的扩展程序创建的应用程序的客户端 ID(取决于扩展程序的创建方式)。请参考this article:

Extension attributes can only be registered on an application object, even though they might contain data for a user. The extension attribute is attached to the application called b2c-extensions-app. Do not modify this application, as it's used by Azure AD B2C for storing user data. You can find this application under Azure AD B2C, app registrations.

您可以在 Azure AD -> 应用注册中找到此应用程序。