Проблема с токеном доступа в Strava API v3 ПОЛУЧИТЕ все действия атлета
У меня проблемы с доступом ко всем видам деятельности спортсмена (моей) из URL в документации API Стравы.
Я могу получить собственную статистику за год:
https://www.strava.com/api/v3/athletes/XXXXXXXX/stats?access_token=ACCESSTOKEN
Я могу получить информацию о моем профиле:
https://www.strava.com/api/v3/athlete?access_token=ACCESSTOKEN
Но когда я пытаюсь получить все мои действия:
https://www.strava.com/api/v3/athlete/activities?access_token=ACCESSTOKEN
Я получаю следующую ошибку:
{
"message": "Authorization Error",
"errors": [
{
"resource": "AccessToken",
"field": "activity:read_permission",
"code": "missing"
}
]
}
Нужно ли указывать мой идентификатор клиента или секретный ключ где-нибудь в URL? Я вошел в систему и поэтому не понимаю, почему я не могу получить доступ к своей собственной информации. пожалуйста, порекомендуйте
3 ответа
15 октября 2018 года Strava расширила процесс авторизации, представив новый список областей применения.
Используете ли вы токен доступа, который вы найдете на https://www.strava.com/settings/api?
Этот токен имеет scope:read
этого может быть недостаточно, чтобы делать то, что вы хотите (то есть, ваша деятельность публичная или частная?).
Если вам нужен новый токен с разными областями действия, вы должны выполнить следующие шаги.
ШАГ 1: перенаправить пользователя на страницу авторизации Strava:
https://www.strava.com/oauth/authorize?
client_id=YOUR_CLIENT_ID&
redirect_uri=YOUR_CALLBACK_DOMAIN&
response_type=code&
scope=YOUR_SCOPE
ШАГ 2: прочитайте code
параметр из ответа:
http://YOUR_CALLBACK_DOMAIN/?
state=&
code=AUTHORIZATION_CODE_FROM_STRAVA&
scope=YOUR_SCOPE
ШАГ 3: запросите новый токен доступа, используя POST
содержащий код авторизации; вы найдете новый access_token
в ответе JSON.
https://www.strava.com/oauth/token?
client_id=YOUR_CLIENT_ID&
client_secret=YOUR_CLIENT_SECRET&
code=AUTHORIZATION_CODE_FROM_STRAVA&
grant_type=authorization_code
Вы можете найти идентификатор клиента, секрет клиента и домен обратного вызова на странице вашего приложения.
Вы можете найти список новых областей применения в этой документации.
Теперь список подсказок, если вы единственный человек, который использует ваше приложение:
- вы можете вручную сделать первые 2 шага, используя браузер и
http://localhost
как домен обратного вызова - используя старый
scope:view_private
вы можете получить то, что Страва назвал токеном навсегда: вы можете использовать этот токен до 15 октября 2019 года, не повторяя 3 шага - сегодня
scope=read,activity:read_all,profile:read_all,read_all
кажется, что полученный короткоживущий токен не работает, когда вы запрашиваете подробную активность
У меня недостаточно очков для комментариев, но я сделал именно это недавно!
Чтобы он заработал, вам нужно установить scope=activity:read
(вместо того 'scope=read
') на шаге 1.
Доступ к Strava api ... Это короткое видео на YouTube расскажет вам все шаги. https://www.youtube.com/watch?v=sgscChKfGyg, а вот текстовый файл на github с соответствующими ссылками. https://github.com/franchyze923/Code_From_Tutorials/blob/master/Strava_Api/request_links.txt
/// get a new access token because it changes. Step 3 in the text file
var value = new Dictionary<string, string>
{
{ "client_id", "abc" },
{ "client_secret", "defg" },
{ "refresh_token", "highlmnop" },
{ "grant_type", "refresh_token" }
};
var content = new FormUrlEncodedContent(value);
var result = await client.PostAsync("https://www.strava.com/oauth/token", content);
string resultContent = await result.Content.ReadAsStringAsync();
var stravaDetails = JsonConvert.DeserializeObject<StravaRoot>(resultContent);
// end get new access token
public class StravaRoot
{
public string token_type { get; set; }
public string access_token { get; set; }
public int expires_at { get; set; }
public int expires_in { get; set; }
public string refresh_token { get; set; }
}