我想将成员添加到分发列表。显然我无法使用Microsoft Graph执行此操作,因此我尝试使用Azure AD Graph API。我正在使用Node.js。
我能够使用adal-node库连接到Azure。我得到一个令牌,发送请求并获得响应。 (我可以列出组,用户等)。
我正在关注Add Members documentation,但感到困惑。
在URL中,我要添加成员的object_id
组id
是巫婆吗?
对于myorganization
,我正在使用tennant_id
。
我在哪里指定用户数据?我应该在POST
中传递它吗?如果是这样,格式是什么?
URL中的$links
是什么?
当前,我正在这样做:
request.post(
"https://graph.windows.net/TENNANT_ID_HERE/groups/GROUP_ID_HERE/$links/members?api-version=1.6",
{
headers: {
Authorization: "Bearer " + TOKEN_HERE,
"Content-Type": "application/json"
},
form: { key: "value" } //should I put my user object here?
},
function(err, res, body) {
if (err) {
console.log("err: " + err);
} else {
console.log("res: " + JSON.stringify(res, null, 3));
}
}
);
我收到以下错误:
{
"odata.error": {
"code": "Request_BadRequest",
"message": {
"lang": "en",
"value": "A supported MIME type could not be found that matches the
content type of the response. None of the supported type(s) 'application/xml, text/xml,
application/json;odata=minimalmetadata;streaming=true, application/json;odata=minimalmetadata;
streaming=false, application/json;odata=minimalmetadata,
application/json;odata=fullmetadata;streaming=true,
application/json;odata=fullmetadata;streaming=false,
application/json;odata=fullmetadata,
application/json;odata=nometadata;streaming=true,
application/json;odata=nometadata;streaming=false,
application/json;odata=nometadata,
application/json;streaming=true,
application/json;streaming=false,
application/json;odata=verbose,
application/json'
matches the content type 'application/x-www-form-urlencoded'."
}
}
}
答案 0 :(得分:1)
我们可以使用AD graph API将成员添加到组中。
post https://graph.windows.net/{tenantId}/groups/{groupobjectid}/$links/members?api-version=1.6
身体
{
"url": "https://graph.windows.net/{tenantId}/directoryObjects/{userObjectId}"
}
用邮递员测试
答案 1 :(得分:1)
最简短/最重要的答案是 Microsoft Graph或Azure AD Graph API都不支持通讯组列表。来自documentation:
重要:您只能将成员添加到安全组和启用邮件的安全组中。
也就是说,从技术上讲,这不是您的电话在此处失败的原因。由于您正在使用的组的类型,您的代码已经到了失败的地步。尽管这对您管理分发列表没有帮助,但实际上是以下情况。
form: { key: "value" }
选项告诉request以URL编码形式(application/x-www-form-urlencoded
)发送有效负载。该API要求有效载荷以JSON(application/json
)的形式发送。
要通过JSON发送,您需要做两件事:
json
选项设置为true
body
值,而不是form
值。正确的代码如下:
request.post(
"https://graph.windows.net/{tenant-id}/groups/{group-id}/$links/members?api-version=1.6",
{
headers: {
Authorization: "Bearer " + TOKEN_HERE
},
json: true,
body: JSON.stringify({ url: "https://graph.windows.net/{tenant-id}/directoryObjects/{user-id}" })
},
function(err, res, body) {
if (err) {
console.log("err: " + err);
} else {
console.log("res: " + JSON.stringify(res, null, 3));
}
}
);
URI中的$links
参数告诉API您正在提供到另一个资源(在本例中为用户记录)的链接。