Невозможно использовать методы Javascript в Azure - PullRequest
1 голос
/ 11 апреля 2019

Я пишу функцию 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();
    };

Я ожидаю получить значение для access_token, возвращенного из ответа на вызов HTTPS GET.

1 Ответ

0 голосов
/ 12 апреля 2019

Я забыл проанализировать ответ JSON, который вернулся в виде буфера (см. Комментарий от @SLaks). После анализа ответа я смог получить значение из объекта JSON.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...