带有 body 属性的 node.js https POST - 如何?

标签 node.js oauth-2.0 httprequest node-rest-client node-https

我正在尝试使用我的node.js 服务器获取 token 。

当有人调用我的服务器的 REST-API 时,将执行下面的代码(在该调用的处理过程中,服务器自己进行了多次调用)。


以下配置适用于 POSTMAN:

网址: https://login.windows.net/MyCompanyTenant.onmicrosoft.com/oauth2/token

标题:

  • 缓存控制:无缓存
  • 内容类型:application/x-www-form-urlencoded

正文:


现在我尝试构建此请求的失败代码:

function retrieveAuthToken() {
    var deferred = q.defer();   

    var bodyDataString = querystring.stringify({
        grant_type: "password",
        client_id:  someClientId, 
        resource: someUrl,
        username: someUsername,
        password: someUsernamePassword,        
        client_secret: someString
   });
   //I also tried replacing thie bodyDataString by the bodyString from the working request provided by Fiddler

    var options = {
        host: 'login.windows.net',
        path: '/someTenant/oauth2/token',
        method: 'POST',
        headers: {
            "Content-Type": "application/x-www-form-urlencoded",
            "Cache-Control": "no-cache"
        }
    };  

    var request = https.request(options, function(response){
        var body = '';
        response.on('data', function(d) {
            body += d;
        });
        response.on('end', function() {
            var parsed = JSON.parse(body); //todo: try/catch
            rdeferred.resolve(parsed.access_token);
        });               
    });

    request.on('error', function(e) {
        console.log(e.message);
        deferred.reject();
    });

   request.write(bodyDataString ); 
   return deferred.promise;    

我没有看到任何错误,我的服务器只是在等待......

最佳答案

您缺少一个 request.end() 来完成请求。或者作为快捷方式,您可以将单个 request.write(bodyDataString) 更改为 request.end(bodyDataString)

关于带有 body 属性的 node.js https POST - 如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38528696/

相关文章:

oauth-2.0 - 如何永久使用 oauth2 token ?

c# - 为什么 Fiddler 的 Http 请求非常快

java - 使用 http 请求自动化与 selenium webdriver 之间有什么区别?

node.js - 如何使用 Sinon 对 Node API 进行单元测试(Express with Mongodb)

javascript - Node.js svd-xbee 错误 : FRAME TYPE NOT IMPLEMENTED: ZigBee Explicit Rx Indicator

node.js - 为什么 connect-flash 的 'message' 未定义?

httprequest - Elsa Workflow - Fork(控制流)

node.js - visual studio 代码 - Node js 错误与 typescript 调试配置

ruby-on-rails - 门卫撤销 token

oauth-2.0 - OIDC 访问 token - 存储在哪里?