我有一个客人用户在Azure Active (完全赎回-邀请接受等),我试图添加到一个团队(在微软团队)通过图形API。
在文献资料之后,我为我的应用程序设置了所有必要的权限,但是我收到了来自POST请求的403个响应。
{
"error": {
"code": "Forbidden",
"message": "An unknown error has occurred.",
"innerError": {
"date": "2020-12-09T15:52:30",
"request-id": "X-X-X-X-X",
"client-request-id": "XXX-XXX-XX-XXX-XXX"
}
}
}
下面是我解码的MS auth令牌,它确认了必要的权限,这应该允许我的调用添加一个团队成员(这个应用程序也做了一些其他的事情,因此增加了额外的权限):
{
...
"roles" : [ "Teamwork.Migrate.All", "TeamMember.ReadWriteNonOwnerRole.All", "User.ReadWrite.All", "Directory.ReadWrite.All", "TeamMember.ReadWrite.All", "ChannelMember.ReadWrite.All", "GroupMember.ReadWrite.All", "Channel.Create" ],
...
}
奇怪的是,如果我使用PowerShell模块(microsoftteams),它成功地将这个用户添加到必要的团队中。我理解这个模块使用了Graph,所以我不知道为什么一个直接的帖子失败了(尝试寻找模块的源代码,看看他们使用的是什么请求,但没有成功)。
为了找到解决这个问题的方法,我只是使用Postman,所以我没有任何代码可以共享。我还可以通过API添加通道成员(来宾)、创建通道等,但这个403问题仅在试图向团队添加客户时才会发生。
我的职位:
POST https://graph.microsoft.com/v1.0/teams/{TEAM ID}/members
标头
{
"Content-Type": "application/json",
"Authorization": "Bearer {TOKEN}"
}
正文
{
"@odata.type": "#microsoft.graph.aadUserConversationMember",
"roles": ["member"],
"user@odata.bind": "https://graph.microsoft.com/v1.0/users('{GUEST_MEMBER_ID}')"
}
我已经尝试过v1.0和beta端点。两人都给了同样的403。
我很高兴提供任何可能需要的进一步资料。
如有任何建议/信息能为我指出正确的方向,我们将不胜感激。
谢谢。
发布于 2020-12-09 18:47:15
您需要知道的第一件事是,您必须是全局管理员或团队管理员和团队所有者才能将来宾添加到团队中,因此在添加来宾用户之前,您必须以管理员身份登录。
因此您不能使用应用程序权限来获取令牌,因为它没有用户登录,您可以使用它来添加成员用户,但是不能使用它来添加来宾。您需要添加TeamMember.ReadWrite.All delegates permissions
,然后授予管理同意书,然后您需要使用auth码流来获取访问令牌。
https://stackoverflow.com/questions/65221062
复制