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から同じ要求をするとき、私はエンドポイントから適切な応答を得ています。これをデバッグするのを手伝ってください。