2016-07-22 20 views
0

J'essaie d'obtenir un token avec mon serveur node.js.node.js https POST avec les attributs du corps - COMMENT?

Le code ci-dessous est exécuté lorsque quelqu'un appelle l'API REST de mon serveur (dans le traitement de cet appel, le serveur effectue lui-même plusieurs appels).


La configuration suivante fonctionne dans POSTMAN:

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

tête:

  • Cache-Control: no-cache
  • Content-Type: application/x-www-form-urlencoded

Corps:


Maintenant, mon défaut de code essayant de construire cette demande:

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;  

Je ne vois aucune erreur, mon serveur seulement attend et attend ...

Répondre

1

Il vous manque un request.end() pour terminer la demande. Ou en tant que raccourci, vous pouvez changer le request.write(bodyDataString) en request.end(bodyDataString).

+0

travaillé comme un charme! – IntegerWolf