2016-03-27 7 views
1

Hallo alle und fröhliche ostern,korrekt Buchungsdaten mit Authentifizierung in JS/JQuery

ich für einen einfachen Texteditor eine Anwendung über Electron schreibe, dass Beiträge Entwürfe medium.com. Sie bieten eine API und die Dokumentation dafür, aber mein Wissen in jQuery und js ist immer noch ein wenig begrenzt. Im Wesentlichen benutze ich Ajax, um die Daten auf Medium zu stellen, aber einen Fehler von 400 zu erhalten. Ich bin sicher, es ist etwas wirklich dumm und einfach, aber ich kann es nicht herausfinden, also hier ist der Code, den ich geschrieben habe, die Daten zu schreiben:

$('.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); 
     } 
    }); 

}); 

Nun ich die accessToken bin Bereitstellung, ich habe gerade 'xxxxx'd es zum Posten. user.id wird am Anfang empfangen, ich kann bestätigen, dass es richtig durchkommt. Wie für die Dokumentation, können Sie es hier sehen: https://github.com/Medium/medium-api-docs#33-posts aber im wesentlichen dafür es fragt:

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" 
} 

Wie ich sagen, ich bin ein wenig unerfahren mit Headern in Ajax und ein wenig verwirrt, so würde jede Hilfe dankbar sein . Vielen Dank.

Der aktualisierte Code:

$.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

können Sie überprüfen, was die 400 Fehlerantwort ist? Normalerweise erklärt es, was fehlt – Akis

+0

@ Jam3sn - Haben Sie eine Lösung gefunden? –

+0

Nein, ich kann immer noch keinen Beitrag schreiben. Ich benutze eine ähnliche Methode, um die Benutzerdetails zu erhalten, und es funktioniert einwandfrei. Also nicht sicher, ich habe versucht, Kontakt mit Medics Engineering, aber nicht viel Glück:/ – Jam3sn

Antwort

1

Für Header Einstellung shoud Sie die header Eigenschaft verwenden, wenn Ajax-Request sendet.

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

Auch shoud Sie Ihre Daten vor senden 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", 
    }), 

Aber es sollte auch ein anderes Problem mit Ihrer Anfrage sein. 400 Fehler bedeutet, dass Sie nicht ein erforderliches Feld an den Dienst gesendet haben

+0

Das ist super danke, ich habe es aktualisiert, und es hat aufgehört mir 400 Fehler, jetzt ein 401, Authentifizierungsfehler mit dem falschen Gastgeber? 'code: -1 message:" ist keine erlaubte Domain. Unser Host ist (api.medium.com:443,/v1/users/myUserIdHere/posts) "'. Also habe ich meinen aktualisierten Code zum ursprünglichen Beitrag hinzugefügt, damit Sie sehen können, was ich mache, aber es ist wie in der Dokumentation angewiesen. – Jam3sn

+0

401 bedeutet, dass der accessToken ungültig ist. Sind Sie sicher, dass Sie ein gültiges Token senden? – Akis

+0

Ja, es ist das Token, das ich in meinem Profil erstellt habe. – Jam3sn

-1

Ich hatte ein ähnliches Problem (401 "ist keine zulässige Domain" Antwort auf POST) und das Problem durch einen zusätzlichen Header mit der Anforderung enthalten:

Origin: https://api.medium.com