Из API DOC ваш API поддерживает аутентификацию Oauth2, используя Учетные данные для пароля владельца ресурса , использующие grant_type = "password"
.
Для API Oauth2 вы обычно используете httr::oauth2.0_token
, но в настоящее время поток httr
Oauht2 не поддерживает этот тип гранта.
Вы должны сделать это сами.
Из документа (я не пробовал, поскольку у меня нет доступа к этому API), вам нужно будет использовать POST
с телом, содержащим ваш параметр.
Это должно работать:
username <- "my_username"
password <- "my_psw"
base_url = "https://api.checkbox.com/v1/my_account/oauth2/token"
response <- POST(url=base_url,
# pass data to the POST request
body = list(
username = username,
password = password,
grant_type = "password"
),
# application/x-www-form-urlencoded
encode = "form",
verbose())
Посмотрите, что, используя httpbin.org в качестве примера, вы получите тот же заголовок, что и в вашем примере, когда ваши данные передаются как форма в POST
username <- "my_username"
password <- "my_psw"
response <- httr::POST(
# for demo
url= "https://httpbin.org/post",
# pass data to the POST request
body = list(
username = username,
password = password,
grant_type = "password"
),
# application/x-www-form-urlencoded
encode = "form")
jsonlite::prettify(httr::content(response, "text"))
#> No encoding supplied: defaulting to UTF-8.
#> {
#> "args": {
#>
#> },
#> "data": "",
#> "files": {
#>
#> },
#> "form": {
#> "grant_type": "password",
#> "password": "my_psw",
#> "username": "my_username"
#> },
#> "headers": {
#> "Accept": "application/json, text/xml, application/xml, */*",
#> "Accept-Encoding": "deflate, gzip",
#> "Content-Length": "56",
#> "Content-Type": "application/x-www-form-urlencoded",
#> "Host": "httpbin.org",
#> "User-Agent": "libcurl/7.64.1 r-curl/4.2.9000 httr/1.4.1"
#> },
#> "json": null,
#> "origin": "176.158.63.46, 176.158.63.46",
#> "url": "https://httpbin.org/post"
#> }
#>
Создано в 2019-11-08 пакетом Представить (v0.3.0)
Надеюсь, это поможет