cURL, работа с api vk

184
20 февраля 2018, 07:49

Написала рабочий скрипт с использованием file_get_contents, где пользователь аутентифицируется и выводятся фото из его альбомов. Но потом мне сказали, что вместо file_get_contents лучше использовать cURL. И я пыталась, в результате получая ошибку:

{"error":"invalid_grant","error_description":"Code is invalid or expired."}

Например, пыталась получить access_token:

$data = array(
    'client_id' => $app_id,
    'client_secret' => $app_key,
    'redirect_uri' => $redirect_uri,
    'code' => $_GET["code"]
);
$string = http_build_query($data);
$ch = curl_init(); // открывает сессию
curl_setopt($ch, CURLOPT_URL, "https://oauth.vk.com/access_token"); // задает настройки
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $string);
$output = curl_exec($ch); // отправляет запрос
curl_close($ch); // закрывает сессию
print_r($output);

Пожалуйста, объясните как правильно это сделать. Что-то я совсем не понимаю как им пользоваться. Возможно, проблема в названии метода в конце url?

Answer 1

Получение access_token

Ваша ошибка в том, что Вы отправляете параметры в $_POST, а нужно в $_GET, т.е.:

$data = array(
    'client_id' => $app_id,
    'client_secret' => $app_key,
    'redirect_uri' => $redirect_uri,
    'code' => $_GET["code"]
);
$string = http_build_query($data);
$ch = curl_init(); // открывает сессию
curl_setopt($ch, CURLOPT_URL, "https://oauth.vk.com/access_token?".urldecode($string)); // задает настройки
$output = curl_exec($ch); // отправляет запрос
curl_close($ch); // закрывает сессию
print_r($output); //ответ в json
$token = json_decode($output, true);
var_dump($token);
READ ALSO
Получение данных ajax

Получение данных ajax

Добрый вечерСтараюсь вникнуть в технологию ajax

174
Отложенный постинг

Отложенный постинг

Доброго времени сутокПодскажите как создается отложенный постинг на примере того же сайта Вконтакте

253
Выборка и сортировка из 2х таблиц через DISTINCT UNION ORDER BY

Выборка и сортировка из 2х таблиц через DISTINCT UNION ORDER BY

Доброго времени! Есть две одинаковые таблицы mesages и achuvedoms с полями:

256