MapMyFitness API - не удается заставить OAuth2 работать в PHP

Все,

Я пытаюсь использовать API MapMyFitness и OAuth2.

Вот урезанный код, который я использую (аналогично коду, который я успешно использовал для соединения с API Strava и RunKeeper):

$mapMyRun_authorization_code = "*****";
$client_id = "*********";
$client_secret = "*************";

$url="https://oauth2-api.mapmyapi.com/v7.0/oauth2/access_token/";

$postfields = array(
    "grant_type" => "authorization_code",
    "client_id" => $client_id,
    "client_secret" => $client_secret,
    "code" => $mapMyRun_authorization_code
);

$headers = array('Api-Key: ' . $client_id);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$json = curl_exec ($ch);
$responsecode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

Когда я запускаю это - $json пусто, и $responsecode это 400, а не 200.

Я явно делаю что-то не так с моей просьбой, но понятия не имею, что...

1 ответ

Решение

Итак, благодаря помощи команды MapMyRun, вот ответ:

$mapMyRun_authorization_code = "*****";
$client_id = "*********";
$client_secret = "*************";

$url="https://oauth2-api.mapmyapi.com/v7.0/oauth2/access_token/";

$postfields = "grant_type=authorization_code&code=" . $mapMyRun_authorization_code . "&client_id=". $client_id . "&client_secret=" . $client_secret;

$headers = array('Api-Key: ' . $client_id);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$json = curl_exec ($ch);
$responsecode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

Важные изменения - $postfields не может быть массивом, и вы не должны включать curl_setopt($ch, CURLOPT_POST, true);

Надеюсь, это будет полезно для кого-то еще...

Другие вопросы по тегам