Неверный JSON-запрос с использованием One Drive API - PullRequest
0 голосов
/ 07 июня 2018

Моя цель - создать папку программно в API OneDrive, используя Javascript / Jquery в приложении, которое я создаю.Я не использую Node.js или Angular.js.Я зарегистрировал свое приложение на портале регистрации приложений OneDrive, затем использовал поток токенов, чтобы получить токен доступа из адресной строки URL моего веб-браузера.Теперь, когда у меня есть токен доступа, я пытаюсь отправить его и запрос в API.Ниже мой код:

var accesshash = window.location.hash.substring(1);
    //console.log(url);
    console.log(accesshash);

    var token = JSON.parse('{' + accesshash.replace(/([^=]+)=([^&]+)&?/g, '"$1":"$2",').slice(0,-1) + '}', function(key, value) { return key === "" ? value : decodeURIComponent(value); });

    console.log(token.access_token);

    var url = "https://graph.microsoft.com/v1.0/me/drive/root/children/"
    var xhr = new XMLHttpRequest();

    if(xhr.readyState == 4) {
        console.log("success");
    }

    xhr.open("POST", url, true);
    xhr.setRequestHeader("Content-type", "application/json");
    xhr.setRequestHeader("Authorization", "Bearer " + token.access_token);

    var newfolder = {
          "name": "0000000000",
          "folder": {}
        }
    xhr.send(newfolder);

Я получаю это как мой ответ JSON:

{
  "error": {
"code": "BadRequest",
"message": "Unable to read JSON request payload. Please ensure Content-Type header is set and payload is of valid JSON format.",
"innerError": {
  "request-id": "c8d43cbc-a59b-4244-8c4e-9193295ec7f8",
  "date": "2018-06-07T19:42:57"
 }
}

}

Означает ли это, что мой токен доступа по крайней мередействует?Или что-то не так с этим?Я что-то упускаю?Я впервые пытаюсь интегрировать Onedrive API в приложение.

1 Ответ

0 голосов
/ 07 июня 2018

Вы отправляете объект, но тип контента - application/json, json - строковое представление объекта javascript

xhr.open("POST", url, true);
xhr.setRequestHeader("Content-type", "application/json;charset=UTF-8"); // added charset
xhr.setRequestHeader("Authorization", "Bearer " + token.access_token);

var newfolder = {
  "name": "0000000000",
  "folder": {}
}
xhr.send(JSON.stringify(newfolder)); // converted to string

Существует множество библиотек http, таких как fetch , request - это может сделать вашу жизнь намного проще

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...