Обновление токена API Strava не производится после первой авторизации - PullRequest
0 голосов
/ 26 октября 2018

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

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

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

{
  "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-скрипте persnoal ...

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

1 Ответ

0 голосов
/ 27 октября 2018

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

...