2016-08-24 1 views
2

Ich versuche, die zoom.us-API zu verwenden, die von der Site bereitgestellt wird. Sie geben mir den cURL-Befehl einen neuen Benutzer zu erstellen:Konvertieren eines CURL-Befehls in AJAX

curl --data 'api_key=your_api_key&api_secret=your_api_secret&[email protected]&type=1&first_name=John&last_name=Smith' https://api.zoom.us/v1/user/create 

ich AJAX übersetzt:

$.ajax({ 
     url: 'https://api.zoom.us/v1/user/create', 
     type: "POST", 
     cache: true, 
     async: false, 
     headers: { 
      'Content-Type': 'application/json' 
     }, 
     data: JSON.stringify({ 'api_key': 'key', 'api_secret': 'secret', 'email': '[email protected]', 'first_name': 'John', 'last_name': 'Smith' }), 
     success: function (res) { 
      console.log(res); 
     }, 
     error: function (err) { 
      console.error(err); 
     } 
    }); 

(Hinweis: die Variablen für ‚api_key‘ und ‚api_secret‘ sind nur Platzhalter in der oben Beispiel: Ich habe meinen eigenen Schlüssel und mein Geheimnis, das ich verwende, wenn ich versuche, diesen API-Aufruf zu machen)

Dieser Code funktioniert jedoch nicht für mich. Ich erhalte die folgende Fehler 403:

XMLHttpRequest cannot load https://api.zoom.us/v1/user/create. 
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://mywebsite.com' is therefore not allowed access. The response had HTTP status code 403. 

Meine Frage ist: Was mache ich falsch? Gibt es irgendetwas, das ich falsch übersetzt habe? Ich weiß auch, dass ähnliche Fragen schon vorher gestellt wurden (so entstand mein übersetzter Code), aber sie konnten mein Problem nicht lösen.

Hier ist die zoom.us Dokumentation, falls es hilfreich ist: https://support.zoom.us/hc/en-us/articles/201363033-REST-User-API

ETA: nach apokryfos Kommentar, hier ist meine aktualisierte Code:

$.ajax({ 
    url: 'https://api.zoom.us/v1/user/create', 
    cache: true, 
    async: false, 
    data: { 'api_key': 'key', 'api_secret': 'secret', 'email': e, 'first_name': 'john', 'last_name': 'smith' }, 
    success: function (res) { 
     console.log(res); 
    }, 
    error: function (err) { 
     console.error(err); 
    } 
}); 

Erzeugt einen neuen Fehler 405:

XMLHttpRequest cannot load api.zoom.us/v1/user/create?api_key=key&api_secret =secret&email=test%40email.com&first_name=Juan&last_name=Gon‌​zalez. 
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'website.com'; is therefore not allowed access. 
+2

POST-Daten und JSON-Daten sind nicht das Gleiche. Sie sollten das Objekt passieren, ohne es zu straffen. Ändern Sie auch nicht den Inhaltstyp. – apokryfos

+3

Häufiger bekannt als CORS (Cross-Origin-Ressourcenfreigabe). Ich würde denken, dass Sie Dinge falsch machen, wenn Sie api Schlüssel/Geheimnisse auf jedem Client-Rechner setzen. –

+0

Dank @apokryfos, die meine 403 Fehler behoben, aber jetzt habe ich einen neuen Fehler 405: XMLHttpRequest kann nicht laden https://api.zoom.us/v1/user/create?api_key=key&api_secret = secret & email = test% 40email.com & first_name = Juan & last_name = Gonzalez. Kein 'Access-Control-Allow-Origin'-Header ist auf der angeforderten Ressource vorhanden. Herkunft 'http://website.com' ist daher nicht erlaubt. Die Antwort hatte den HTTP-Statuscode 405. – Juan

Antwort

0

konnte ich die richtige Antwort dank @apokryfos finden.

$.ajax({ 
    url: 'https://crossorigin.me/https://api.zoom.us/v1/user/create', 
    type: "POST", 
    cache: true, 
    async: false, 
    data: { 'api_key': 'key', 'api_secret': 'secret', 'email': e, 'first_name': f, 'last_name': l }, 
    success: function (res) { 
     console.log(res); 
    }, 
    error: function (err) { 
     console.error(err); 
    } 
}); 

}

+0

Ich würde auch vorschlagen, dass Sie mit dem API-Anbieter kommunizieren, um sie wissen zu lassen, dass Browser irrtümlicherweise HTTP-Fehler von diesem Webdienst als CORS-Verletzungen interpretieren. Es gibt hier keine Verletzung von CORS, nur der entfernte Server gibt nicht an, dass er CORS-Anfragen akzeptiert, daher nimmt der Browser an, dass der Fehler darauf zurückzuführen ist. – apokryfos

1

Tr y einmal das Hinzufügen datatype: ‚JSONP‘ wie der Balg

$.ajax({ 
    url: 'https://api.zoom.us/v1/user/create', 
    cache: true, 
    dataType: 'jsonp' 
    async: false, 
    data: { 'api_key': 'key', 'api_secret': 'secret', 'email': e, 'first_name': 'john', 'last_name': 'smith' }, 
    success: function (res) { 
     console.log(res); 
    }, 
    error: function (err) { 
     console.error(err); 
    } 
});