Почему wall.post перестает работать через какое-то время?

Получаю токен руками, таким образом:

1) Сначала
$sRequest = "https://api.vk.com/oauth/authorize?client_id=" . $vkontakteApplicationId . "&scope=offline,wall,groups&redirect_uri=https://vk.com&response_type=code";

- это можно только руками если ввести в браузер ссылку, в итоге отдается код в урле, оттуда руками копирую и далее получаю токен:

2)
$sRequest = "https://oauth.vk.com/access_token?client_id=" . $vkontakteApplicationId . "&client_secret=" . $vkontakteApplicationSecret . "&redirect_uri=https://vk.com&code=" . $code;


3) Копирую полученный токен и публикую пост на стене в группе вот так:

$sRequest = "https://api.vk.com/method/wall.post?owner_id=" . $ownerID . "&from_group=1&access_token=" . $accessToken ."&signed=" . $signed . "&v=5.80";

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $sRequest);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, "message= $message");
        $r = curl_exec($ch);
        curl_close($ch);
        var_dump($r);


Вчера все работало ок где-то в 16 по Москве, сегодня в 6:33 уже не работало, выдавал ошибку "User authorization failed: invalid session." - я так понимаю что токен, наверное, нужно получать руками постоянно? Или как? В чем именно проблема? Или в принципе можно автоматизировать получение токена по одному и тому же коду (руками необходимо получать только код, токен можно получить по этому коду уже автоматически - но здесь тоже возникает проблема с тем что если долго не обращаться, видимо, сессия тоже истекет, т.е. придется обращения делать по крону и записывать токены в бд..).

Заранее благодарен за ответы!
  • Вопрос задан
  • 326 просмотров
Решения вопроса 1
@Ampleev Автор вопроса
В общем, написал в поддержку vk.com - исправили, теперь работает и исправлять ничего не нужно.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Jeer
@Jeer
уверенный пользователь
Всё верно, у токена есть время жизни. Как только он оказался просроченный, необходимо заново его получать.
Если у вас получается руками получить, то почему не получается из php отправить ссылку и вытащить оттуда токен? Код я вам, к сожалению, не подскажу, я делал на другом языке. Должны быть примеры корректной работы, поищите
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы