c# - Microsoft Graph SDK 不返回 Azure AD B2C 用户的自定义属性值
问题描述
我添加了一个新的自定义属性,并在注册登录用户流的应用程序声明中选择了它。
所以我创建了一个新用户并在注册期间为这个自定义属性设置了一个值。当我与用户登录时,该属性会保留在令牌声明中,因此我可以从令牌中获取值。
所以现在我需要使用 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;
但是当我检查响应时,自定义属性不存在。如果我将它们包含在选择中,则默认属性就在那里。任何线索可能是什么原因?
这是我在将自定义属性请求为“extension_clientId_customattribute”时使用的客户端 ID。(但没有连字符)
解决方案
您必须使用使用扩展创建的应用程序的客户端 ID(取决于扩展的创建方式)。请参考这篇文章:
扩展属性只能在应用程序对象上注册,即使它们可能包含用户的数据。扩展属性附加到名为b2c-extensions-app 的应用程序。请勿修改此应用程序,因为 Azure AD B2C 使用它来存储用户数据。您可以在 Azure AD B2C、应用注册下找到此应用程序。
您可以在 Azure AD -> 应用注册中找到此应用程序。
推荐阅读
- macos - 是否可以将 pyobjc 与私有的 XPC 帮助工具和 XPCInterface API 一起使用?
- sql - SQL Server OUTER JOIN 结果受 WHERE 条件限制
- reactjs - 为数组中类似的反应子对象创建单独的状态
- django - 如何在 django Templete 中通过循环显示来自模型的多个图像
- apache-spark - 如何在 Amazon EMR 集群上使用 Spark 连接到 Redshift 数据
- c# - 跟随一篇关于使用 iTextsharp 阅读 PDF 的帖子,但遇到了错误
- mongodb - if (!db) throw new Error('missing db argument\nnew Grid(db, mongo)');^ Error: missing db argument new Grid(db, mongo)
- mdx - MDX 函数 (Excel PowerPivot) 从 DB 中排除非数值
- javascript - 如何使用多个按钮触发相同的下拉/弹出框?
- android - Android - 如何将渐变颜色应用于位图?