1. Создать текстовый файл для временного хранения получаемых от ВК данных в папке с исполняемыми скриптами автопостинга. К примеру vk_tmp.txt
2. При первом запуске выдаст ошибку о несовпадении ip-адреса, используемого при получении токена с текущим.
Необходимо выполнить рефреш и получить новый токен. Создать php файл следующего содержания:
<?php
$url = 'https://id.vk.com/oauth2/auth';
$data = [
'grant_type' => 'refresh_token',
'refresh_token' => 'vk2.много букв и цифр',
'client_id' => '11111111',
'device_id' => 'много букв и цифр',
'state' => 'XXXRandomZZZ1111111111111111XXXRandomZZZ',
'scope' => 'vkid.personal_info photos wall offline'
];
// Prepare POST data
$options = [
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => http_build_query($data),
],
];
// Create stream context
$context = stream_context_create($options);
// Perform POST request
$response = file_get_contents($url, false, $context);
file_put_contents(__DIR__ . '/vk_tmp.txt', print_r($response, true));
// Display the response
echo $response;
echo '<br>';
$array = json_decode($response, true);
print_r($array);
?>
Для формирования массива исходящих данных использовать параметры, полученные в результате curl-запроса при получении токена.
В результате получим обновленные токены с записью результата в созданный файл.
В дальнейшем перед запуском скрипта автопубликации с сайта в ВК будем брать информацию о рефреш-токене из временного файла, с его помощью получать новые актуальные токены, перезаписывать их во временный файл, полученный access_token использовать в скрипте.
<?
$tmp_access_data = file_get_contents(__DIR__ . '/vk_tmp.txt');
// json to array
$array_access_data = json_decode($tmp_access_data, true);
$refresh_token = $array_access_data['refresh_token'];
// Define the URL and data
$url = 'https://id.vk.com/oauth2/auth';
$data = [
'grant_type' => 'refresh_token',
'refresh_token' => $refresh_token,
'client_id' => '11111111',
'device_id' => 'много букв и цифр',
'state' => 'XXXRandomZZZ1111111111111111XXXRandomZZZ',
'scope' => 'vkid.personal_info photos wall offline'
];
// Prepare POST data
$options = [
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => http_build_query($data),
],
];
// Create stream context
$context = stream_context_create($options);
// Perform POST request
$response = file_get_contents($url, false, $context);
file_put_contents(__DIR__ . '/vk_tmp.txt', print_r($response, true));
// json to array
$array_access_data_new = json_decode($response, true);
$access_token = $array_access_data_new['access_token'];
?>