无法在Azure中使用Javascript方法

时间:2019-04-11 16:59:31

标签: javascript azure

我正在编写一个Azure函数来在没有用户的情况下对Microsoft Graph进行身份验证。这需要一个访问令牌,该访问令牌将从HTTPS响应中返回。我正在尝试反序列化JSON对象,但是,我无法调用任何允许我从Microsoft响应中获取值的方法。

我能够记录数据,但是当我调用方法尝试获取值时,该函数会超时。

// d =从Microsoft返回的数据 我尝试了以下方法,但是它们都超时了:

JSON.parse(d) d.map() d.values()

我想知道是否有人知道应该调用哪个库来访问方法-我认为我需要在函数顶部添加一个require语句,但可能完全没有基础。任何帮助是极大的赞赏!


    var https = require('https');
    var querystring = require('querystring');

    module.exports = function (context, req) {
        var postData = querystring.stringify({
            'client_id': {client_id},
            'scope': 'https://graph.microsoft.com/.default',
            'client_secret': {client_secret},
            'grant_type': 'client_credentials'
        });

        var options = {
            hostname: 'login.microsoftonline.com',
            port: 443,
            path: '/{token}/oauth2/v2.0/token',
            method: 'POST',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded',
                'Content-Length': postData.length
            }
        };

        var oauthReq = https.request(options, (res) => {
            res.setEncoding('utf8');

            res.on('data', (d) => {
                // vvvvv PROBLEM OCCURS HERE vvvvv
                context.log('SERIALIZED DATA' + d.map())
                context.log('DATA ' + d.values())
            });
        });

        oauthReq.on('error', (e) => {
            context.log('ERROR ' + e);    
        }); 

        var wr_r = oauthReq.write(postData)
        var rq_e = oauthReq.end();
    };

我希望获得HTTPS GET调用响应中返回的access_token的值。

1 个答案:

答案 0 :(得分:0)

我忽略了解析作为缓冲区返回的JSON响应(请参阅@SLaks的评论),一旦我解析了响应,便能够从JSON对象获取值。

let accessToken = JSON.parse(d).access_token;