Microsoft Graph 异常:必须使用服务操作生成新密码凭据

Microsoft Graph Exception: New password credentials must be generated using service actions

如何使用 Microsoft Graph 客户端 SDK 在创建应用程序时添加客户端密码?

定义如下所示的应用程序失败,并出现 必须使用服务操作生成新密码凭据。 异常:

var application new Application
{
    DisplayName = "My app name",
    PasswordCredentials = new List<PasswordCredential>
    {
        new PasswordCredential
        {
            SecretText = secretKey,
            DisplayName = "Default Secret",
            EndDateTime = DateTimeOffset.MaxValue,
            KeyId = Guid.NewGuid(),
            StartDateTime = DateTimeOffset.Now,
            CustomKeyIdentifier = null,
            Hint = secretKey.Substring(4)
        }
    }
};

await graphClient.Applications.Request().AddAsync(application);

我找到了有关如何使用 HTTP POST 执行此操作的信息,但在使用 Microsoft Graph 客户端 SDK 时找不到。

找到了,只需要在 documentation.

中仔细查看
var createdApplication = await graphClient.Applications.Request().AddAsync(application);

var passwordCredential = new PasswordCredential
{
    DisplayName = "Password friendly name",
    EndDateTime = DateTimeOffset.Parse("31/12/2299"), // Max allowed as far as I can tell
    KeyId = Guid.NewGuid(),
    StartDateTime = DateTimeOffset.Now,
    CustomKeyIdentifier = null,
};

var passwordCredential = await graphClient.Applications[createdApplication.Id]
    .AddPassword(passwordCredential)
    .Request()
    .PostAsync();

return 值 passwordCredential 包含秘密文本。

您不能将 passwordCredentials: []直接添加到应用程序创建 POST 调用。您将收到类似于以下内容的错误:必须使用服务操作生成新密码凭据。您必须先创建应用程序,然后调用 POST 来更新应用程序的 passwordCredentials 字段。通过此更改,您无法再生成自己的秘密文本。您只能设置开始日期、结束日期和显示名称。

参考:https://docs.microsoft.com/en-us/graph/api/application-addpassword?view=graph-rest-beta