Токен обновления Strava API не выдается после первой авторизации

возможно, кто-то может мне помочь, я пытаюсь получить токен обновления, выпущенный после первой авторизации спортсмена с моим приложением, Oauth 2.0 отлично работает в почтальоне, и я могу получить токен обновления таким образом, но не в моем личном php скрипт ... Я получил только такой ответ JSON:

{
  "token_type": "Bearer",
  "access_token": "ACCESS_TOKEN",
  "athlete": {
    #{summary athlete representation}
  }
}

Но я жду токена обновления и даты истечения срока действия, как показано в документации Strava API в этом примере:

{
  "token_type": "Bearer",
  "access_token": "987654321234567898765432123456789",
  "athlete": {
    #{summary athlete representation}
  }
  "refresh_token": "1234567898765432112345678987654321",
  "expires_at": 1531378346,
  "state": "STRAVA"
}

Я пытался отменить доступ к приложению из тестовой учетной записи, чтобы имитировать новый запрос аутентификации, много раз, но я не нашел ответа, вот его мой код для вызова URL-адреса обмена токенами:

<?php 
require 'config.php';
$code = $_GET['code'];


//The url you wish to send the POST request to
$url = "https://www.strava.com/oauth/token";

//The data you want to send via POST
$fields = [
    'client_id'      => $client_ID,
    'client_secret' => $client_secret,
    'code'         => $code,
    'grant_type' => 'authorization_code'
];

//url-ify the data for the POST
$fields_string = http_build_query($fields);

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

//So that curl_exec returns the contents of the cURL; rather than echoing it
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); 

//execute post
$result = curl_exec($ch);
echo $result;
print_r(curl_error($ch))
?>

PS: Oauth 2.0 отлично работает в почтальоне, и я могу получить токен обновления таким образом, но не в моем личном php-скрипте ...

Спасибо за помощь.


person Maxime    schedule 26.10.2018    source источник
comment
какие параметры области видимости вы используете при вызове https://www.strava.com/oauth/authorize?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&response_type=code&scope=YOUR_SCOPE?   -  person tezzo    schedule 26.10.2018
comment
Привет, спасибо за ответ, я нашел решение, но вы правы, это был параметр области действия, я указывал неправильную область действия, и с scope=read_all&scope=activity:read_all она работает отлично.   -  person Maxime    schedule 27.10.2018
comment
если вы используете старую область видимости (например, view_private), вы получаете токен доступа без информации expires_at (навсегда), который будет работать до 15 октября 2019 года (developers.strava.com/docs/oauth-updates/)   -  person tezzo    schedule 29.10.2018
comment
токен навсегда ... истекает 15 октября 2019 года, я думаю, что не буду его использовать, и учту систему токенов обновления при разработке приложения. Большое спасибо   -  person Maxime    schedule 30.10.2018
comment
Strava называет их навсегда токенами в инструкциях по миграции! ;)   -  person tezzo    schedule 30.10.2018
comment
Правильно;) на всякий случай, 15 января 2019 г., адрес электронной почты больше не является частью профиля: read_all scope и удален из модели спортсмена., так что знаете ли вы, какое решение будет связываться с пользователями, которые разрешают доступ к вашему приложению после этой даты, с другой областью действия? (для исследования в области спорта и науки мне нужно иметь контактное решение для изучаемой группы ...), спасибо!   -  person Maxime    schedule 30.10.2018


Ответы (1)


Наконец нашел решение, это был параметр области действия, я указывал неправильную область действия и с scope=read_all&scope=activity:read_all, it works perfectly.

person Maxime    schedule 27.10.2018