2017-08-27 3 views
1

Ich versuche, mich mithilfe der POST-Methode bei einer API zu authentifizieren. Hier ist die Dokumentation, die ich beziehe Kite Connect API. Ich kann nicht verstehen, wo ich falsch liege. Fehler ist mit Prüfsumme oder POST?POST-Authentifizierung mithilfe der REST-API mit Antwortschlüssel und Prüfsumme

library(digest) 
require("httr") 

my_api <- "xxx" 
my_req_token <- 'yyy' 
my_secret <- 'zzz' 

check<-hmac(my_req_token,paste0(paste0(my_api,my_req_token),my_secret),algo=c('sha256')) 

url <- 'https://api.kite.trade/session/token' 
login <- list(api_key=my_api, 
       request_token = my_req_token, 
       checksum = check) 

response<- POST(url,body= login) 

Dies ist die Antwort, die ich erhalte.

> response 
Response [https://api.kite.trade/session/token] 
Date: 2017-08-27 12:34 
Status: 400 
Content-Type: application/json 
Size: 81 B 

> content(response, "parsed", "application/json") 
$status 
[1] "error" 

$message 
[1] "Missing api_key" 

$error_type 
[1] "InputException" 

Antwort

0

Problem behoben ist. Post-Daten sollten als 'application/x-www-form-urlencoded', Einstellung kodieren arg Form tut dies

library(digest) 
require("httr") 

my_api <- "xxx" 
my_req_token <- 'yyy' 
my_secret <- 'zzz' 

#use digest insted of hmac; digest serializes argument first, use serialize arg to disable that 
check<-digest(paste0(my_api, my_req_token, my_secret), algo='sha256', serialize=FALSE) 

url <- 'https://api.kite.trade/session/token' 
login <- list(api_key=my_api, 
       request_token = my_req_token, 
       checksum = check) 

#post data should be sent as 'application/x-www-form-urlencoded', setting encode arg to form does this 
response<- POST(url,body= login, encode='form') 

parsed_content <- content(response, "parsed", "application/json") 
0

geben diesem einen Schuss

#devtools::install_github("hrbrmstr/curlconverter") 

library(curlconverter) 

curlExample <- 'curl https://api.kite.trade/session/token 
    -d "api_key=xxx" 
    -d "request_token=yyy" 
    -d "checksum=zzz"' 

resp <- make_req(straighten(curlExample)) 
resp 
+0

'> bzw. [[1]] function() HTTR :: VERB gesendet werden (verb = "GET", url = "https://api.kite.trade/session/token") ' –

+0

Dies ist die Antwort, die ich vom Code bekommen habe. * hinzugefügt hmac für die Prüfsumme –