使用 JavaScript 从 Azure Functions 对 Graph API 进行身份验证
Authenticate to Graph API from Azure Functions with JavaScript
我想使用 NodeJS 创建一个 azure 函数并向 Graph API 进行身份验证。通过阅读,我知道我必须使用客户端凭证流。我正在使用此代码作为 posted by:
const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void>
const APP_ID = [appId]';
const APP_SECERET = '[secret]';
const TOKEN_ENDPOINT ='https://login.microsoftonline.com/[tenantid]/oauth2/v2.0/token';
const MS_GRAPH_SCOPE = 'https://graph.microsoft.com/.default';
const axios = require('axios');
const qs = require('qs');
const postData = {
client_id: APP_ID,
scope: MS_GRAPH_SCOPE,
client_secret: APP_SECERET,
grant_type: 'client_credentials'
};
axios.defaults.headers.post['Content-Type'] =
'application/x-www-form-urlencoded';
axios
.post(TOKEN_ENDPOINT, qs.stringify(postData))
.then(response => {
context.res = {
body: response.data //JSON.stringify(w, null, 4)
};
})
.catch(error => {
console.log(error);
});
};
如本文所述post:
但是这不起作用,因为它甚至没有向 Azure 发出请求。有什么东西不见了吗?我不能在使用 Node 时使用 MSAL.JS 进行服务器到服务器调用,还是它仅适用于基于 Web 的应用程序,不能与 azure 函数一起使用?
我看到的大多数示例都与 .Net 相关,它们使用了一堆 nuget 包等。JavaScript azure 函数不支持我需要的东西吗?
谢谢。
我不知道你为什么说它甚至没有向 azure 发出请求,我用与你几乎相同的代码测试它并且它工作正常。我提供以下详细步骤供您参考。
1. 我在 VS 代码中创建了一个类型脚本函数(不要忘记在代码的第二行声明 require
),我的函数代码显示为:
import { AzureFunction, Context, HttpRequest } from "@azure/functions"
declare var require: any
const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
const APP_ID = 'xxxxxx';
const APP_SECERET = 'xxxxxx';
const TOKEN_ENDPOINT ='https://login.microsoftonline.com/xxxxxx/oauth2/v2.0/token';
const MS_GRAPH_SCOPE = 'https://graph.microsoft.com/.default';
const axios = require('axios');
const qs = require('qs');
const postData = {
client_id: APP_ID,
scope: MS_GRAPH_SCOPE,
client_secret: APP_SECERET,
grant_type: 'client_credentials'
};
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
axios
.post(TOKEN_ENDPOINT, qs.stringify(postData))
.then(response => {
console.log('=====below is response====');
console.log(response.data);
console.log('=====above is response====');
context.res = {
body: response.data
};
})
.catch(error => {
console.log(error);
});
};
export default httpTrigger;
2. 我通过命令安装 axios
和 qs
模块:
npm install axios
npm install qs
3. 要启动该功能,我 运行 命令:
npm install
npm start
4.请求函数后,我得到的结果是:
我想使用 NodeJS 创建一个 azure 函数并向 Graph API 进行身份验证。通过阅读,我知道我必须使用客户端凭证流。我正在使用此代码作为 posted by:
const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void>
const APP_ID = [appId]';
const APP_SECERET = '[secret]';
const TOKEN_ENDPOINT ='https://login.microsoftonline.com/[tenantid]/oauth2/v2.0/token';
const MS_GRAPH_SCOPE = 'https://graph.microsoft.com/.default';
const axios = require('axios');
const qs = require('qs');
const postData = {
client_id: APP_ID,
scope: MS_GRAPH_SCOPE,
client_secret: APP_SECERET,
grant_type: 'client_credentials'
};
axios.defaults.headers.post['Content-Type'] =
'application/x-www-form-urlencoded';
axios
.post(TOKEN_ENDPOINT, qs.stringify(postData))
.then(response => {
context.res = {
body: response.data //JSON.stringify(w, null, 4)
};
})
.catch(error => {
console.log(error);
});
};
如本文所述post:
但是这不起作用,因为它甚至没有向 Azure 发出请求。有什么东西不见了吗?我不能在使用 Node 时使用 MSAL.JS 进行服务器到服务器调用,还是它仅适用于基于 Web 的应用程序,不能与 azure 函数一起使用?
我看到的大多数示例都与 .Net 相关,它们使用了一堆 nuget 包等。JavaScript azure 函数不支持我需要的东西吗?
谢谢。
我不知道你为什么说它甚至没有向 azure 发出请求,我用与你几乎相同的代码测试它并且它工作正常。我提供以下详细步骤供您参考。
1. 我在 VS 代码中创建了一个类型脚本函数(不要忘记在代码的第二行声明 require
),我的函数代码显示为:
import { AzureFunction, Context, HttpRequest } from "@azure/functions"
declare var require: any
const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
const APP_ID = 'xxxxxx';
const APP_SECERET = 'xxxxxx';
const TOKEN_ENDPOINT ='https://login.microsoftonline.com/xxxxxx/oauth2/v2.0/token';
const MS_GRAPH_SCOPE = 'https://graph.microsoft.com/.default';
const axios = require('axios');
const qs = require('qs');
const postData = {
client_id: APP_ID,
scope: MS_GRAPH_SCOPE,
client_secret: APP_SECERET,
grant_type: 'client_credentials'
};
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
axios
.post(TOKEN_ENDPOINT, qs.stringify(postData))
.then(response => {
console.log('=====below is response====');
console.log(response.data);
console.log('=====above is response====');
context.res = {
body: response.data
};
})
.catch(error => {
console.log(error);
});
};
export default httpTrigger;
2. 我通过命令安装 axios
和 qs
模块:
npm install axios
npm install qs
3. 要启动该功能,我 运行 命令:
npm install
npm start
4.请求函数后,我得到的结果是: