Задать вопрос
@achuraev

Wall.post в паблик вк на php?

Всем привет, более года не был в теме вк апи. Скажите, после бесконечных апдейтов вк в 2016 году осталась возможность постить на стену группы вк из пхп? Делал вроде как и раньше, токен получал через Standalone приложение, раньше помню работала такая схема. Сейчас выдает ошибку по токену, что у него прав не хватает для этого метода.

ПС: вижу разные приложения СММ, они постят вроде без проблем. Если кто-то знает в чем секрет, подскажите, в гугле пусто, только старые методы.
  • Вопрос задан
  • 3875 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@f_u_s_s
Любопытный кодер
Нужно запрашивать токен с правами wall и groups, по схеме Implicit flow - т.е. в параметре redirect_uri указывать адрес https://oauth.vk.com/blank.html , либо не указывать вовсе. Я использовал такой подход: получал токен по такой схеме, а потом JS парсил адрес до символа # и записывал токен в бд, получал я его с правами group,wall,offline. Потом просто проверял его перед каждым постом, и если токен оказывался мертвым - проводил авторизацию снова. Единственное неудобство - приходилось просить пользователя копировать адрес из открывающегося окна авторизации, в кортором был токен. Иначе права на стену просто игнорируются. Такой подход вполне приемлем при варианте, когда один админ хочет делать кросспост при добавлении новостей на сайте. В остальных случаях - как-то надо выкручиваться иначе.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@ivkol
Код на C#. Только что проверил. Токен через standalone. Может, поможет (на php нет под рукой)
private void sendMessage(string msg)
        {
              
                string url = "https://api.vk.com/method/wall.post?owner_id=" + Convert.ToString(id_group);
                url += "&message=" + msg;
                url += "&v=5.21";
                url += "&access_token=" + token;

                lblLog.Text = Response(url);   
            
        }

        private string Response(string request_path)    //на вход подаем URL API
        {
            string response = string.Empty;
            HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(request_path);   //отправление запроса к серверу API
            HttpWebResponse Response = (HttpWebResponse)Request.GetResponse();      //получение ответа от сервера API
            Stream receiveStream = Response.GetResponseStream();
            Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
            StreamReader readStream = new StreamReader(receiveStream, encode);

            Char[] read = new Char[256];
            int count = readStream.Read(read, 0, 256);

            while (count > 0)
            {
                String line = new String(read, 0, count);
                response += line + "\r\n";
                count = readStream.Read(read, 0, 256);
            }

            Response.Close();
            readStream.Close();

            return response;
        }
Ответ написан
Комментировать
kirill_782
@kirill_782
Днем я Маринетт
Вручную токен записывает и все. Просто они когда-то сделали обноау, которая розволища standalone использовать rederict url и токен имер схожие права с сайтами. Просто в браузере пробрасываете rederict url, вытаскивает из адресной строки токен и вставояеие в php. Я так стену модерирую. Можно у СПП поклянчить доступ к wall для сайтов как сделали некоторые сайты постинговой тематики
Ответ написан
Ваш ответ на вопрос

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

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