Попытка получить данные из API

Я пытаюсь получить некоторые данные о назначении из программного обеспечения для управления практикой. У меня есть ключ API, но у меня нет опыта в этой области.

Я пытался преобразовать код Curl без особого успеха. Документация по API находится здесь https://github.com/redguava/cliniko-api.

Я пытаюсь преобразовать этот код завитка

curl https://api.cliniko.com/v1/appointments \
  -u API_KEY: \
  -H 'Accept: application/json' \
  -H 'User-Agent: APP_VENDOR_NAME (APP_VENDOR_EMAIL)'

Что я пробовал: (да, это конвертер curl в r)

require(httr)

headers = c(
  `Accept` = 'application/json',
  `User-Agent` = 'APP_VENDOR_NAME (APP_VENDOR_EMAIL)'
)

res <- httr::GET(url = 'https://api.cliniko.com/v1/appointments', 
httr::add_headers(.headers=headers), 
httr::authenticate('API_KEY', 'INSERTED MY API KEY'))

Благодарим за любую идею


person Pat Slattery    schedule 28.08.2019    source источник
comment
Какую ошибку вы получаете?   -  person Tensibai    schedule 28.08.2019
comment
[1] Ошибка клиента: (401) Неавторизованный   -  person Pat Slattery    schedule 28.08.2019
comment
Из документа API пароль не указан, возможно, вам удастся добиться большего успеха с помощью httr::authenticate('INSERTED MY API KEY','')).   -  person Tensibai    schedule 28.08.2019


Ответы (1)


httr::authenticate принимает входные данные username и password в форме httr::authenticate(username,password).

Аутентификация Curl принимает аргументы username и password, к которым добавляется :, то есть username:password.

В примере из документации API команда curl аутентифицирует комбинацию username:password API_KEY:. Присмотревшись, мы видим, что после : пусто. Из этого мы можем определить, что поле имени пользователя должно быть «API_KEY», а поле пароля должно быть «».

Итак, вы должны изменить свою команду curl на:

require(httr)

headers = c(
  `Accept` = 'application/json',
  `User-Agent` = 'APP_VENDOR_NAME (APP_VENDOR_EMAIL)'
)

res <- httr::GET(url = 'https://api.cliniko.com/v1/appointments', 
httr::add_headers(.headers=headers), 
httr::authenticate('API_KEY', ''))

Где API_KEY — предоставленный вами ключ API.

person Col Bates - collynomial    schedule 28.08.2019
comment
Или цитируя документ, связанный с вопросом. Вы должны указать ключ API Cliniko в качестве основного имени пользователя для аутентификации. Нет необходимости вводить пароль. - person Tensibai; 29.08.2019
comment
Спасибо большое, вы попали в точку на 100%. Мне удалось заставить его работать :) - person Pat Slattery; 30.08.2019