gpt4 book ai didi

node.js - 使用 Node js 的 azure-graphapi 模块更新用户

转载 作者:搜寻专家 更新时间:2023-10-31 23:52:57 26 4
gpt4 key购买 nike

我正在尝试使用 Node.js 技术更新我的 Azure 帐户上的用户。我正在使用 azure-graphapi 模块发送请求并初始化。以下是我的代码。

var GraphAPI = require('azure-graphapi');
var graph = new GraphAPI(appSettings.oauthOptions.tenantId, appSettings.oauthOptions.clientId, appSettings.oauthOptions.clientSecret);
var reqHeaders = { "content-type": "application/json" };
var reqBody = {
"department": "Sales",
"usageLocation": "US"
}
var person = {
userId: userID
};

graph.patch('users/f0eceb4f-xxxx-409a-xxxx-4e3exx4e3157', JSON.stringify(reqBody), reqHeaders, function (err, user) {
if (!err) {
console.log(user);
}
else {
console.log(err);
}
});

即使在提供了 content-Type header 之后,它也会向我抛出一个错误:“{ [错误:Graph API 错误:400(错误请求)Content-Type header 值丢失。] statusCode: 400 }”

如果有人能帮助我解决这个问题,那将会很有帮助。

最佳答案

您使用的这个模块有几个错误。为了使代码正常工作,我们应该对 node_modules/auzre-graphapi 中的源代码 GraphAPI.js 进行一些额外的修改:

Line 195 开头,有一个if条件stmt,作者似乎忘记定义自line 199以来使用的content ,并且只有当您必须将帖子正文解析为 buffer 对象时,它才会设置内容类型 header 。所以,我们可以快速修改代码为:

if (data) {
if (Buffer.isBuffer(data)) {
options.headers['Content-Type'] = contentType;
} else if (!contentType) {
content = data;
if (typeof content === 'string') {
options.headers['Content-Type'] = 'application/x-www-form-urlencoded';
options.headers['Content-Length'] = content.length;
} else if (content !== null && typeof content === 'object') {
content = JSON.stringify(content);
options.headers['Content-Type'] = 'application/json';
options.headers['Content-Length'] = content.length;
}
} else {
if (typeof contentType === 'string') {
options.headers['Content-Type'] = contentType;
} else if (contentType['Content-type'] !== null) {
options.headers['Content-Type'] = contentType['Content-type'];
}
}
}

然后将 header 设置为您的代码:var reqHeaders = { "Content-type": "application/json"};

顺便说一句,如 update user document指的是,如果成功,它将响应 204,没有响应正文,因此如果成功,您的代码将打印“未定义”。

2016 年 4 月 19 日更新

由于作者不再维护该包,他创建了一个新包 graph-service用于通用图形 API。引用https://github.com/fhellwig/azure-graphapi/issues/5#issuecomment-211392546

关于node.js - 使用 Node js 的 azure-graphapi 模块更新用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36306985/

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