Https Post Request with body

时间:2015-07-29 12:30:45

标签: javascript node.js https

我需要从Microsoft AD获取令牌,为此我需要使用POST发出BODY请求。我有这个代码返回正文中缺少grant_type参数的错误。我猜它只是不送尸体。如何配置发送正文的请求?

任何帮助将不胜感激!

这是我的代码:

var options = {
    hostname:  'login.microsoftonline.com',
    path: '/common/oauth2/token',           
    method: 'POST',
    headers: {
          'Content-Type': 'application/x-www-form-urlencoded'
        },
    data:{
            grant_type: oauthData.grant_type,
            client_id: oauthData.client_id,
            code: oauthData.code,
            redirect_uri: oauthData.redirect_uri,
            resource: oauthData.resource
         }    
  };

function requestToken(options){
    var req = https.request(options, function(res) {
        console.log("statusCode: ", res.statusCode);
        console.log("headers: ", res.headers);

        res.on('data', function(d) {
            process.stdout.write(d);
        });
    });
    req.end();

    req.on('error', function(e) {
        console.error('---- Error ----');
        console.error(e);
    });
}//end of requestToken()

1 个答案:

答案 0 :(得分:0)

它不是发送正文,因为您没有告诉req对象。

  1. 从选项中删除数据{}对象。
  2. 向请求添加一个req.write()。
req.write(qs.stringify({ 
grant_type: 'authorization_code',
client_id: config.clientId,
scope: config.scope,
client_secret: config.clientSecret,
tenant: config.tenant
}))