gpt4 book ai didi

node.js - 使用 Azure AD API 将成员添加到通讯组

转载 作者:太空宇宙 更新时间:2023-11-03 23:18:46 26 4
gpt4 key购买 nike

我想将成员添加到通讯组列表。由于显然我无法使用 Microsoft Graph 执行此操作,因此我正在尝试使用 Azure AD Graph API。我正在使用 Node.js。

我能够使用 adal-node 库连接到 Azure。我拿回 token 、发送请求并获取响应。 (我可以列出组、用户等)。

我正在关注Add Members documentation ,但我很困惑。

  1. 在 URL 中,object_id 是我要添加成员的群组的 id 吗?

  2. 对于myorganization,我使用tennant_id

  3. 在哪里指定用户数据?我应该在 POST 中传递它吗?如果是这样,格式是什么?

  4. 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'."
}
}
}

最佳答案

简短/最重要的答案是 Microsoft Graph 或 Azure AD Graph API 都不支持通讯组列表。来自 documentation :

Important: You can only add members to security groups and mail-enabled security groups.

<小时/>

也就是说,从技术上讲,这并不是您的调用失败的原因。由于您所使用的组的类型,您的代码已达到失​​败的程度。虽然它不能帮助您管理通讯组列表,但以下是实际发生的情况。

form: { key: "value"} 选项告诉 request以 URL 编码表单 (application/x-www-form-urlencoded) 的形式发送有效负载。 API 要求负载以 JSON (application/json) 形式发送。

要通过 JSON 发送,您需要做两件事:

  1. json 选项设置为 true
  2. 设置 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 您正在提供指向另一个资源(在本例中为用户记录)的链接。

关于node.js - 使用 Azure AD API 将成员添加到通讯组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52084604/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com