2017-08-03 8 views
0

thisドキュメントを使用してアプリケーション用のOneDrive接続を実装しようとしています。私はcodeをパラメータから取得し、文書のコードフローのステップ2を使用してaccess_tokenを取得しようとしていました。私のサーバーはNodeJSアプリケーションです。Onedrive oauth、コードフローのステップ2が動作しない

サーバからRESTリクエストを作成するためのrestServiceというカスタムサービスがあります。ここでは上記のサービスを使用して、それ

const https = require('https'); 
let makeRequest = (host, endPoint, method, requestOptions={}) => { 
    return new Promise ((resolve, reject) =>{ 
     var options = { 
      host: host, 
      port: 443, 
      path: endPoint, 
      method: method, 
      headers : requestOptions.headers || {} 
     }; 
     var req = https.request(options, function(response) { 
      let body = ""; 
      response.on('data', (d) => { 
       body += d; 
      }); 
      response.on('end', function() { 
       resolve({ 
        statusCode : response.statusCode, 
        body : body 
       }) 
      }); 
      response.on('error', function() { 
       reject("Error while making request"); 
      }); 
     }); 

     if(!!requestOptions.body){ 
      req.write(requestOptions.body); 
     } 
     req.on('error', (e) => { 
      console.error("ERROR WHILE MAKING API call to " + host + " :", e) 
      reject(e); 
     }); 
     req.end(); 
    }) 
} 

ためのコードは、私はコードフローのステップ2で述べたように

let endpoint = "/common/oauth2/v2.0/token"; 
let body = "grant_type=authorization_code&client_id="+config.onedrive.client_id 
       +"&redirect_uri="+encodeURIComponent(config.onedrive.redirect_uri) 
       +"&client_secret="+config.onedrive.client_secret+"&code="+code; 
let requestOptions = { 
    headers : { 
     "Content-Type" : "application/x-www-form-urlencoded" 
    } , 
    body : body 
} 
restService.makeRequest("login.microsoftonline.com", endpoint, "POST", requestOptions) 
.then(data=>{console.log(data)}) 

に従いますが、よう要求がaccess_tokenは取得するために作るどんなに私は何をすべきか、私は)(restService.makeRequestから応答

{ 
    statusCode : 404 
    body : "" 
} 

を取得します。しかし、POSTMANから同じ要求をするとき、私はエンドポイントから適切な応答を得ています。これをデバッグするのを手伝ってください。

答えて

0

今その作業予想通り

​​

を次のようにIはrestServiceに'Content-Length'ヘッダを追加しました。なぜlogin.microsoftonline.comがヘッダがない場合は404を返しますか?

関連する問題