Доступ к дневному временному ряду Fitbit с помощью httr: недопустимый redirect_uri
Я пытаюсь получить доступ к данным дневного ряда Fitbit. Когда я выполняю приведенный ниже код, я всегда получаю следующую ошибку: "Информация для разработчика: invalid_request - недопустимое значение параметра redirect_uri".
require(httr)
Sys.setenv("HTTR_SERVER_PORT" = "1410/")
fitbit.app <- oauth_app("[MyAppName}", key = "[MyClientID]", secret = "[MySecret]")
fitbit.ep <- oauth_endpoint(
request = "https://api.fitbit.com/oauth2/token",
authorize = "https://www.fitbit.com/oauth2/authorize",
access = "https://api.fitbit.com/oauth2/token"
)
fitbit.token <- oauth2.0_token(fitbit.ep,
fitbit.app,
scope=c("heartrate"),
use_basic_auth = T)
Я настроил свое приложение на https://dev.fitbit.com/ чтобы иметь URL-адрес обратного вызова " http://localhost:1410/".
Та же проблема была описана здесь: https://community.fitbit.com/t5/Web-API-Development/Having-trouble-with-redirect-uri-via-httr-in-R/m-p/1286028/highlight/false. Но ответ, помеченный как решение, не работает.
Кроме того, мне интересно, почему "response_type = code" установлен, а не "response_type = token", как я ожидал. Я пытался установить дополнительный параметр type = "token", но это не меняет его.
Может кто-нибудь, пожалуйста, помогите?
1 ответ
Хорошо, к счастью, я сам нашел проблему. Ответ может быть полезен и для кого-то еще.
Я сравнил URL авторизации из приведенного выше кода с URL-адресом, созданным вспомогательной страницей Fitbit: https://dev.fitbit.com/apps/oauthinteractivetutorial.
Это указывало на то, что производный от httr redirect_uri содержал суффикс "%2F" два раза подряд. Это означает, что закодированный redirect_uri был " http://localhost:1410//" вместо " http://localhost:1410/". Решение состоит в том, чтобы заменить
Sys.setenv("HTTR_SERVER_PORT" = "1410/")
от
Sys.setenv("HTTR_SERVER_PORT" = "1410")
в коде выше. Конечно, я нашел фрагмент кода установки переменной среды в "1410/" где-то в сети. Там было сказано, что это был центральный ключ, чтобы заставить вещи работать. Это жизнь.
Я надеюсь, что это поможет другим. Этот чертовски пригодный API уже вызвал у меня сильную головную боль.