MS Graph SDK - 向任何用户分配许可证

MS Graph SDK - assigning license to any user

我正在尝试使用 MS Graph API 中的 assignLicense 功能,如 here

所述

当我使用 SDK 时,我正在查看 C# 示例,它使用

graphServiceClient.Me.AssignLicense

但是,graphServiceClient.Me 指的是登录用户。我在服务器端应用程序中,所以 .Me 是应用程序,而不是用户,我没有看到指定的方法Id/UserPrincipalName 将请求发送给正确的用户。

关于如何在使用 GraphServiceClient 时注入正确的 id/upn 有什么想法吗?

设法自己弄明白了

graphServiceClient.Users[id].AssignLicense 

是要走的路.. 不确定如何使用 upn,但用户 ID 工作正常。

您不能将 Me 用于应用程序范围(即 app-only 场景)。 "Me" 只是当前经过身份验证的用户的别名,由于您没有经过身份验证的用户,因此 Graph 无法知道您要访问哪个用户。

您需要通过 id 或他们的 userPrincipalName:

明确指定用户
await graphClient
  .Users["id"]
  .AssignLicense(licensesToAdd, licensesToRemove) 
  .Request()      
  .PostAsync();

await graphClient
  .Users["upn@domain.onmicrosoft.com"]
  .AssignLicense(licensesToAdd, licensesToRemove) 
  .Request()      
  .PostAsync();

注意 licensesToAddList<AssignedLicense>licensesToRemoveList<Guid>