【问题标题】:Exception Azure AD B2C Setting Custom Attribute With GraphServiceClient异常 Azure AD B2C 使用 GraphServiceClient 设置自定义属性
【发布时间】:2021-07-08 21:52:14
【问题描述】:

从这里开始:https://docs.microsoft.com/en-us/azure/active-directory-b2c/user-flow-custom-attributes?pivots=b2c-user-flow

我能够创建并让用户正常:

// This works!
var graphServiceClient = new GraphServiceClient(
                    $"https://graph.microsoft.com/beta",
                    AuthenticationProvider);
var user = await graphClient.Users[userId].Request().GetAsync();

if (user.AdditionalData == null)
    user.AdditionalData = new Dictionary<string, object>();
user.AdditionalData[$"extension_xxxxxxx_Apps] = "TestValue";
// this does not work!
result = await graphClient.Users[user.Id].Request().UpdateAsync(msGraphUser);

对于 xxxxxxx,我从租户的 b2c-extensions-app 中尝试了客户端 ID 和对象 ID。

例外: Microsoft.Graph.ServiceException:'代码:Request_BadRequest 消息:以下扩展属性不可用:extension_xxxxxxx_Apps。

我错过了什么?如何从 GraphServiceClient 设置自定义属性?

谢谢

【问题讨论】:

    标签: microsoft-graph-api azure-ad-b2c


    【解决方案1】:

    尝试创建一个“新”用户,而不是获取现有用户。当你调用UpdateAsync 时,B2C 只会设置你提供的属性(它不会用null 覆盖其他属性)。这可能有帮助,也可能没有帮助,但问题是,我们正在做与您在上面所做的相同的事情,除了“新”用户,它对我们有用。

    User b2cUser = await this.GetOurUser(userId);
    var additionalData = new Dictionary<string, object>();
    additionalData["extension_id-of-extensions-app-here_Foo"] = "Ice Cream Cone";
    var updatedB2cUser = new User
    {
        AdditionalData = additionalData
    };
    
    await this.GraphServiceClient.Users[b2cUser.Id].Request().UpdateAsync(updatedB2cUser);
    

    在实践中,我们包含了额外的 props,例如 Identities,因为我们使用 B2C 作为身份提供者......所以上面是我们的 B2C 包装器中的一些精简代码,仅显示“自定义属性”部分。

    更新 实际上,您可能只需要从您的扩展应用 ID 中删除连字符并仔细检查您使用的是哪一个。

    【讨论】:

    • 实际上感谢我用它创建了一个新用户后,它正在更新现有用户...去图...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多