1

http POST mit Parametern - wie funktioniert das?

Hallo zusammen,

 

wir versuchen einen POST request per Ninox zu senden.
Die GET requests funktionieren ohne Probleme.
Aber bei POST werden die Parameter auf dem Server nicht erkannt bzw. nicht an ihn zugestellt.

 

Die Folgenden Versionen habe ich alle ausprobiert. Aber egal wie - immer das gleiche Ergebnis. Der Parameter client_id kommt bei digikey nicht an.

 

let oauth := do as server
   http("POST", "https://api.digikey.com/v1/oauth2/token“, {'client_id': „xyz“ } )
end;

oder:

let oauth := do as server
   http("POST", "https://api.digikey.com/v1/oauth2/token“, { ‘content-type’:“application/json“}, {'client_id': „xyz“ } )
end;

oder:

let oauth := do as server
   http("POST", "https://api.digikey.com/v1/oauth2/token“, {'client_id': „xyz“ }, { ‘content-type’:“application/json“} )
end;

oder:

let oauth := do as server
   http("POST", "https://api.digikey.com/v1/oauth2/token“, {'client_id': „xyz“ } , {'client_id': „xyz“ })
end;

oder:

let oauth := do as server
   http("POST", "https://api.digikey.com/v1/oauth2/token“, "client_id=xyz")
end;

digikey antwortet immer: "client_id" is undefined or null

 

Für jede Hilfe wäre ich sehr dankbar.

Achim

5 Antworten

null
    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Achim
    OAuth2.0 direkt aus Ninox heraus wird wohl nicht funktionieren.
    Da must du wohl schauen ob eine Drittlösung wie Zapier,Integromat eine Lösung für digikey hat oder mit NodeRed oder n8n dir selber etwas bauen um OAuth-POST-Requests zu erzeugen.

    • aschlum
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Uwe,

    danke für die schnelle Antwort. 

    Ganz OAuth2.0 will ich nicht machen. Ich möchte nur einen neuen Token mit einem vorhandenen (langlebigen) Refreshtoken erzeugen.
    Das ist ein einziger POST request - halt mit Parametern.
    Oder heisst das, dass die OAuth POST Spezifikation ein anderes HTTP POST verwendet?
    Die Frage ist ja, wo der Parameter hängen bleibt.
    Der Call funktioniert mit einem einzigen CURL Befehl auf der Kommandozeile wunderbar. 

     

    curl --data "client_id=xxx" --data "client_secret=yyy" --data "refresh_token=zzz" --data "grant_type=refresh_token" "https://api.digikey.com/v1/oauth2/token"

     

    Das Ergebis beinhaltet dann den Bearer Token für den eigentlichen Request.

    Also die Frage bleibt: Hat Ninox bei POST requests Probleme mit Parametern?

    Viele Grüße

    Achim

    • Leonid_Semik
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Wenn curl  funktioniert, dann sollte es in Ninox so laufen:

    ----

    let myURL:="https://api.digikey.com/v1/oauth2/token";
    let my Headers:={
    'content-type':"application/json"
    };
    let myBody:={
    client_id : "xyz",
    client_secret : "yyy",
    grant_type : "refresh_token",
    refresh_token : "zzz"
    },
    let oauth := do as server
    HTTP("POST",myURL,myHeaders,myBody)
    end;
    alert(oauth.result)
    ---

    Leo

    • aschlum
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

     

    danke für Deine Antwort.
    Aber es klappt nicht. Ich habe es sicherheitshalber auch mit Deinem Code oben getestet.

     

    Probier es selbst mal in der Console aus und mit CURL so wie ich es geschrieben habe.

     

    Ergebnis von Ninox POST: client_id is undefined or null
    Ergebnis von CURL POST: invalid refreshToken (was ja klar ist - denn zzz ist nicht korrekt)

     

    Hmm

    Achim

    • aschlum
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Noch eine Anmerkung dazu:
    Das ist was ich ausprobiert habe:

    let myURL := "https://api.digikey.com/v1/oauth2/token";
    let myHeaders:={
    'content-type':"application/json"
    };
    let myBody:={
    client_id : "xyz",
    client_secret : "yyy",
    grant_type : "refresh_token",
    refresh_token : "zzz"
    };

    let oauth := do as server
    http("POST",myURL,myHeaders,myBody)
    end;

    alert(oauth.result)

     

    Achim