我正在尝试使用node.js从Azure函数调用事件API
我已经通过以下方式创建了网络应用程序
我获得了 api 端点和令牌。
在创建 Web 应用程序时,我还注册了我的 Azure 函数 url 作为源。
例如,如果我的函数应用程序网址是
FnApp 网址
https://msazfunctionapp.azurewebsites.net/api/msazfunctionname?code=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
在我注册的原产地字段中
https://msazfunctionapp.azurewebsites.net/
创建 Web 应用程序后,我按照以下链接在 Azure 函数中使用事件 API
https://learn.microsoft.com/en-us/dynamics365/marketing/developer/using-events-api
但是当我使用“代码+测试”选项卡从天蓝色门户运行该函数时,我在响应中看到以下错误
回复状态:400
这是Node.JS函数App中的JS代码
const https = require('https');
module.exports = async function (context, req) {
try {
context.log('JavaScript HTTP trigger function for D365 Events API processed a request.');
try {
const requestOptions = {
method : 'GET',
headers : { 'Content-Type': 'application/json' }
};
const fetchUrl = 'https://xxxxxxxxxxxxxxxxxxx.svc.dynamics.com/EvtMgmt/api/v2.0/events/published?emApplicationtoken=xxxxx-xxxxx-xxxxxxxxx’;
const response = await fetch(fetchUrl);
context.log('Response status : ' + response.status);
const respData = await response.json();
const JSONrespData = JSON.stringify(respData);
context.log('Response data as string : ' + respData);
context.log('Response data as Object : ' , respData);
context.log('Response data JSON Stringified : ' + JSONrespData);
} catch(err) {
context.log('Error in Events Api : ' + err);
}
// context.res = data;
const responseJSON = {
"data" : respData
}
context.res.headers = { "Content-Type": "application/json" };
context.res.headers = { "content-type": "application/json" };
context.res.body = responseJSON;
context.done();
} catch(err) {
context.res = {
status: 500
};
}
}
我们无法解决这个问题,因此我们找到了另一种获取事件数据的方法。 我们使用了 Web api,并且能够获取事件相关数据 https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/perform-operations-web-api
但是我们必须进行一些配置才能使 Web Api 正常工作 https://learn.microsoft.com/en-us/power-apps/developer/data-platform/oauth-cross-origin-resource-sharing-connect-single-page-application