2016-03-27 1 views
1

Привет всем и счастливой ПасхиПравильно проводки данных с аутентификацией в JS/JQuery

Я пишу приложение через Electron для простого текстового редактора, публикующие тяг к medium.com. Они предоставляют api и документацию для него, но мои знания в jquery и js все еще немного ограничены. По сути, я использую Ajax для отправки данных на носитель, но получаю ошибку 400. Я уверен, что это то, что на самом деле тупой и простой, но я не могу понять это, так вот код, который я написал, чтобы отправить данные:

$('.save_draft').click(function(){ 

    var accessToken = 'xxxxx'; 

    $.ajax({ 
     url: "https://api.medium.com/v1/users/" + user.id + "/posts", 
     type: 'POST', 
     dataType: 'html', 
     contentType: "application/json", 
     beforeSend: function(xhr) { 
      xhr.setRequestHeader("Authentication", accessToken) 
     }, 
     data: { 
      "title": "Liverpool FC", 
      "contentFormat": "html", 
      "content": "<h1>Liverpool FC</h1><p>You’ll never walk alone.</p>", 
      "canonicalUrl": "http://jamietalbot.com/posts/liverpool-fc", 
      "tags": ["football", "sport", "Liverpool"], 
      "publishStatus": "draft", 
     }, 
     success: function(data){ 
      alert(data); 
     } 
    }); 

}); 

Теперь я предоставление маркер доступа, я просто 'xxxxx'd это для публикации. user.id получен в начале, я могу подтвердить, что он прошел правильно. Что касается документации, представленной, вы можете увидеть его здесь: https://github.com/Medium/medium-api-docs#33-posts, но по существу это просит для этого:

POST /v1/users/5303d74c64f66366f00cb9b2a94f3251bf5/posts HTTP/1.1 
Host: api.medium.com 
Authorization: Bearer 181d415f34379af07b2c11d144dfbe35d 
Content-Type: application/json 
Accept: application/json 
Accept-Charset: utf-8 
{ 
"title": "Liverpool FC", 
"contentFormat": "html", 
"content": "<h1>Liverpool FC</h1><p>You’ll never walk alone.</p>", 
"canonicalUrl": "http://jamietalbot.com/posts/liverpool-fc", 
"tags": ["football", "sport", "Liverpool"], 
"publishStatus": "public" 
} 

Как я уже сказал, я несколько неопытен с заголовками в AJAX и немного запутался, так что любая помощь будет оценена , Благодарю.

Обновленный код:

$.ajax({ 
     url: "https://api.medium.com:443/v1/users/" + user.data.id + "/posts", 
     type: 'POST', 
     headers: { 
      'Authorization': 'Bearer ' + accessToken, 
      'Content-Type': 'application/json', 
      'Accept': 'application/json' 
     }, 
     data: JSON.stringify({ 
      "title": "Liverpool FC", 
      "contentFormat": "html", 
      "content": "<h1>Liverpool FC</h1><p>You’ll never walk alone.</p>", 
      "canonicalUrl": "http://jamietalbot.com/posts/liverpool-fc", 
      "tags": ["football", "sport", "Liverpool"], 
      "publishStatus": "draft", 
     }), 
     success: function(data){ 
      alert(data); 
     } 
    }); 
+0

Вы можете проверить, что такое ответ на ошибку 400? Обычно он объясняет, чего не хватает – Akis

+0

@ Jam3sn - Вы нашли решение? –

+0

Нет, я все еще не могу сделать сообщение. Я использую подобный метод для получения сведений о пользователях, и он работает безупречно. Так что не уверен, я попытался связаться с инженерами Mediums, но не имел большой удачи:/ – Jam3sn

ответ

1

Для установки заголовков вам следует использовать свойство header при отправке запроса Ajax.

// Request with a header property 
$.ajax({ 
    url: 'foo/bar', 
    headers: { 
     'Authorization': 'Bearer ' + accessToken, 
     'Content-Type':'application/json' 
    } 
}); 

Также вы Шоуда stringify данные перед отправкой:

data: JSON.stringify({ 
     "title": "Liverpool FC", 
     "contentFormat": "html", 
     "content": "<h1>Liverpool FC</h1><p>You’ll never walk alone.</p>", 
     "canonicalUrl": "http://jamietalbot.com/posts/liverpool-fc", 
     "tags": ["football", "sport", "Liverpool"], 
     "publishStatus": "draft", 
    }), 

Но она должна быть еще одна проблема с вашим запросом, а также. 400 означает, что вы не отправили обязательное поле в службу

+0

Thats great thanks, я обновил его, и теперь он прекратил давать мне ошибку 400, теперь 401, ошибка аутентификации с неправильным хозяйничать? 'code: -1 message:" не является допустимым доменом. Наш хост (api.medium.com:443,/v1/users/myUserIdHere/posts) ". Поэтому я добавил свой обновленный код к исходному сообщению, чтобы вы могли видеть, что я делаю, но это описано в документации. – Jam3sn

+0

401 означает, что accessToken недействителен. Уверены ли вы, что вы отправляете действительный токен? – Akis

+0

Да его токен, который я сгенерировал в моем профиле. – Jam3sn

-1

У меня была аналогичная проблема (401 «не разрешен ответ домена на POST») и разрешил проблему, включив дополнительный заголовок с запросом:

Origin: https://api.medium.com 
Смежные вопросы