Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Microsoft Graph SDK未返回Azure AD B2C用户的自定义属性值_C#_Microsoft Graph Api_Azure Ad B2c_Microsoft Graph Sdks - Fatal编程技术网

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

C# Microsoft Graph SDK未返回Azure AD B2C用户的自定义属性值,c#,microsoft-graph-api,azure-ad-b2c,microsoft-graph-sdks,C#,Microsoft Graph Api,Azure Ad B2c,Microsoft Graph Sdks,我添加了一个新的自定义属性,并在应用程序声明中选择了它 注册登录用户流的 因此,我创建了一个新用户,并在注册期间为这个自定义属性设置了一个值。当我与用户登录时,该属性将保留在令牌声明中,以便我可以从令牌中获取值 所以现在我需要使用Graph SDK来获取它,我正试图使用以下代码来实现这一点,这些代码的灵感来源于此 但是当我检查响应时,自定义属性不存在。如果我将默认属性包括在“选择”中,则会显示这些属性。你知道原因是什么吗 这是我在请求自定义属性为“extension\u clientId\u c

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

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

所以现在我需要使用Graph SDK来获取它,我正试图使用以下代码来实现这一点,这些代码的灵感来源于此

但是当我检查响应时,自定义属性不存在。如果我将默认属性包括在“选择”中,则会显示这些属性。你知道原因是什么吗

这是我在请求自定义属性为“extension\u clientId\u customattribute”时使用的客户端Id。(但没有连字符)


您必须使用使用扩展创建的应用程序的客户端id(取决于扩展的创建方式)。请参阅:

扩展属性只能在应用程序对象上注册,即使它们可能包含用户的数据。扩展属性附加到名为b2c扩展应用程序的应用程序。请勿修改此应用程序,因为Azure AD B2C使用它存储用户数据。您可以在Azure AD B2C、应用程序注册下找到此应用程序


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

在Microsoft graph explorer中查询时是否获得自定义属性?
        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;