Я только начал работать со Strava API на Android. Чтобы использовать его, мне сначала нужно успешно настроить OAuth2. Для этого я решил использовать библиотеку Scribe, поскольку использовал ее в предыдущей реализации.
Аутентификация происходит в методе onCreate () объекта MainActivity. Тестовое приложение использует два класса рядом с MainActivity. StravaOAuth20ServiceImpl предназначен для настройки запросов API для токена и отзыва токена. StravaOAuth2Api содержит конечные точки для API. Они выглядят нормально.
Я не получаю код обратного вызова. Вот где я застрял. Для работы обратный вызов должен быть правильно настроен в настройках разработчика для Strava, Android Manifest и вызова API EndPoint.
В настоящее время я работаю в режиме разработки. На веб-сайте указано, что «localhost и 127.0.0.1 внесены в белый список», поэтому я использовал их в своем callback_url. Для обоих я получаю в ответ следующий JSON:
{
"message": "Bad Request",
"errors": [
{
"resource": "Application",
"field": "redirect_uri",
"code": "invalid"
}
]
}
Итак, оба эти вызова недействительны ..
- https://www.strava.com/oauth/authorize?response_type=code&client_id=25016&redirect_uri=127.0.0.1
- https://www.strava.com/oauth/authorize?response_type=code&client_id=25016&redirect_uri=localhost
Связанный вопрос касается формы callback_url. Я сделал то же самое для FitBit и использовал обратный вызов в форме «http: // callback_myapplication». Для этого мне нужно настроить «хост» и «схему» в моем манифесте Android (см. Код ниже). Когда я пытаюсь сделать это в настройках своего приложения, я получаю сообщение об ошибке «Поле должно быть доменом без //» (см. Экран печати ниже). Я впервые это вижу. Тогда это обратный вызов без "схемы"?
<activity android:name = ".MainActivity">
<intent-filter>
<action android:name = "android.intent.action.MAIN" />
<action android:name = "android.intent.action.VIEW"/>
<category android:name = "android.intent.category.LAUNCHER" />
<category android:name = "android.intent.category.DEFAULT"/>
<category android:name = "android.intent.category.BROWSABLE"/>
<data android:host = "127.0.0.1"
android:scheme = "http"/>
</intent-filter>
Заранее благодарим за помощь!
после Документация OAuth2 вы должны использовать точно такое же значение, которое вы включили в настройки авторизации.
Поэтому в вашем случае параметр redirect_uri должен быть:
http://127.0.0.1
Лучший!
Из моего опыта работы со Strava это не так. Веб-интерфейс фактически выдаст ошибку, если вы попытаетесь включить "http". Он скажет: «Это поле должно быть просто доменом, без косой черты или путей». Если вы укажете номер порта, это не приведет к возникновению ошибки в пользовательском интерфейсе, но вызовет ошибку при перенаправлении. В конце концов, это должно быть ТОЛЬКО доменное имя.
Официальная документация Strava находится здесь: https://developers.strava.com/docs/authentication/
Согласно их документации, localhost и 127.0.0.1 внесены в белый список. Таким образом, перенаправление должно работать на localhost независимо от настройки на странице приложения. Это тоже был мой опыт: перенаправление на любой порт localhost должно работать.
Когда приходит время настроить реальный URL-адрес, настройкой домена обратного вызова должно быть просто имя домена. Нет протокола (например, http / https), нет номера порта. Так, например, просто "myapp.domain.com".
Это все еще не работает .. Мой полный код можно найти на "github.com/NVwingh84/StravaAPITest", если бы у вас было время проверить, было бы здорово ..