POST 使用带有响应密钥和校验和的 REST API 进行身份验证
POST authentication using REST API with response key and checksum
我正在尝试使用 POST 方法向 API 进行身份验证。这是我指的文档 Kite Connect API。
我无法理解我哪里出错了。错误是校验和或 POST ?
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)
这是我收到的回复。
> 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"
试一试
#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
问题已解决。 post 数据应作为 'application/x-www-form-urlencoded' 发送,将编码 arg 设置为表单可以做到这一点
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")
我正在尝试使用 POST 方法向 API 进行身份验证。这是我指的文档 Kite Connect API。 我无法理解我哪里出错了。错误是校验和或 POST ?
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)
这是我收到的回复。
> 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"
试一试
#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
问题已解决。 post 数据应作为 'application/x-www-form-urlencoded' 发送,将编码 arg 设置为表单可以做到这一点
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")