Ответы пользователя по тегу ВКонтакте
  • Как при помощи vk api опубликовать пост на стене в группе, в которой не являешься владельцем?

    tomnolane
    @tomnolane
    профессиональный разработчик
    никак
    нужно иметь (у акаунта) права публикации (т.е. админ группы должен вам разрешить делать публикации в настройках группы) и тогда вы сможете делать через API публикации в группе
    Ответ написан
  • Как можно получить список у кого я в бане в вк?

    tomnolane
    @tomnolane
    профессиональный разработчик
    увы...
    либо использовать это. в fields использовать blacklisted, blacklisted_by_me
    но это "костыль".
    Ответ написан
  • Имеется ли ограничение на использование VK API c одного IP?

    tomnolane
    @tomnolane
    профессиональный разработчик
    нету.

    То есть, смогу ли я посылать 6 запросов в секунду, используя 2 аккаунта, но с одного компьютера?

    не 6, а не более 3-ёх для каждого аккаунта в секунду. (суммарно 6 если сложить кол-ва запросов двух аккаунтов. п.с. у вас это звучит как-то двусмысленно)

    API считается только по аккаунтам
    Ответ написан
  • Как использовать метод users.search из ВК?

    tomnolane
    @tomnolane
    профессиональный разработчик
    .xml <- уберите из запроса

    <?php GET_http(String.Format("https://api.vk.com/method/users.search?" + request + "&offset=0&count=1000&fields=photo_id&access_token={0}", Settings1.Default.token)); ?>
    Ответ написан
    Комментировать
  • Слишком длинная строка.Как передать большой массив в хранимую процедуру VK API?

    tomnolane
    @tomnolane
    профессиональный разработчик
    вот как я отправляю через post
    // сам post
    public async Task<string> POST(string url, NameValueCollection nvc = null)
            {
                try
                {
                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                    request.Method = WebRequestMethods.Http.Post;
                    request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0";
                    request.AllowAutoRedirect = true;
                    request.ProtocolVersion = HttpVersion.Version11;
                    request.AllowWriteStreamBuffering = true;
                    request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
                    string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
                    request.ContentType = "multipart/form-data; boundary=" + boundary; 
                    request.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3");
                    request.Headers.Add("Accept-Encoding", "gzip, deflate");
                    request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; 
    
                    if (nvc != null)
                    {
                        Stream rs = request.GetRequestStream();
    
                        byte[] boundarybytes = Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
                        string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";
                        string _key = String.Empty;
                        foreach (string key in nvc.Keys)
                        {
                            rs.Write(boundarybytes, 0, boundarybytes.Length);
                            string formitem = string.Format(formdataTemplate, key, nvc[key]);
                            byte[] formitembytes = Encoding.UTF8.GetBytes(formitem);
                            rs.Write(formitembytes, 0, formitembytes.Length);
                        }
                        rs.Write(boundarybytes, 0, boundarybytes.Length);
                    } 
    
                    return await Task.Run(() =>
                    {
                        string resp = RESPONSE(request);
                        return resp;
                    });
                }
                catch (Exception ex)
                {
                    return ex.Message;
                }
            }
    //  post обращается к  ответу
     public string RESPONSE(HttpWebRequest request)
            {
                try
                {
                    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                    string answer = "";
                    var headers = response.Headers.ToString();
    
                    if (Convert.ToInt32(response.StatusCode) == 302 || Convert.ToInt32(response.StatusCode) == 200)
                    {
                        using (Stream rspStm = response.GetResponseStream())
                        {
                            using (StreamReader reader = new StreamReader(rspStm, Encoding.UTF8, true))
                            {
                                answer = String.Empty; answer = reader.ReadToEnd();
                            }
                        } 
                        return answer;
                    }
                    else
                    {
                        response.Close(); return WebUtility.HtmlDecode(response.StatusDescription);
                    }
                }
                catch (Exception ex)
                {
                    return WebUtility.HtmlDecode(ex.Message);
                }
            }
    
    //после этого сам  код: (на примере wall.get)
    public async System.Threading.Tasks.Task<bool> GetWall(int id_group, int offset = 0)
            {
                try
                {
                    string url = "https://api.vk.com/method/wall.get?";
                    Main_Tools mt = new Main_Tools();
    
                    // вот что вам надо: создать коллекцию и передать в post (и добавлять/заполнять через for || foreach для вашего случая
    
                    NameValueCollection nvc = new NameValueCollection();
                    nvc.Add("access_token", VK_main.TOKEN);
                    nvc.Add("owner_id", id_group.ToString());
                    nvc.Add("count", "1");
                    if(offset != 0) nvc.Add("offset", offset.ToString());
                    nvc.Add("filter", "owner"); 
                    nvc.Add("v", VK_main.VERSION);
                    
                    // добавляете сколько вам нужно параметров и передаёте в метод POST вторым аргументом
    
                    string t = await mt.POST(url, nvc);
                   dynamic d = JObject.Parse(t);
                   // и далее разбираете json
    //.. и т.д.
    Ответ написан
    1 комментарий
  • В чем ошибка в обращении к хранимой процедуре vk api?

    tomnolane
    @tomnolane
    профессиональный разработчик
    https://api.vk.com/method/execute.getFriends?&access_token=aaaaaabbbbbbbccccc&users=1,23

    между execute.getFriends?&access_token у вас ?&. Это не правильно. Знак амперсанда уберите из запроса и добавьте "&v=5.63"
    Ответ написан
    1 комментарий
  • Тематика курсовой работы?

    tomnolane
    @tomnolane
    профессиональный разработчик
    первое, вот -> моя программа CatPost написанная полностью на c# (wpf) которая использует оф. API (в т.ч. и ВК)
    так что - на C# МОЖНО работать с API (да и наверно с любым языком ООП или Функциональным, прототипно-ориентированный и некоторых других видах)
    второе, (простое) приложение для VK на c#: подробная статья

    п.с. на youtube полно видео уроков - как создать (простое) приложение для работы с API VK на C#
    п.с.с. на github тоже можно найти разные и полезные решения/наработки

    насколько это сложно, насколько целесообразно ?

    Просто(гугл/яндекс/ютуб/хабрахабр/тостер в помощь), целесообразно

    Тематика:
    по аналогии Алексей Лебедев -> создать приложение, которые ищет всех в ВК, кто учится в вашем учебном заведении - показать в списке: вместе с имя/фамилия + ава + id + пол (п.с. если память не изменяет, максимум API может за раз показать список первых 5000 юзеров)
    Ответ написан
    1 комментарий
  • Как проверить открыта ли стена вк?

    tomnolane
    @tomnolane
    профессиональный разработчик
    637e8a4807dc4bd4ac4b750635f82053.PNG
    в fields используйте параметр can_post и/или can_see_all_posts
    запрос users.get

    а по этому запросу можете посмотреть ещё всякие интересности, в частности:
    ed8ad530525241c8a219d2deda0be738.PNG20f3cc2116da4378b38a2c47188afbb7.PNG
    Ответ написан
    Комментировать
  • Почему не работает метод docs.save Vk api?

    tomnolane
    @tomnolane
    профессиональный разработчик
    я загружаю так (правда не на php, а на c#, но суть одна и таже):
    1) получаю сервер для загрузки:
    var json = JObject.Parse(VkRequest("https://api.vk.com/method/docs.getUploadServer?v=" + Vk.Version + "&access_token=" + Vk.AccessToken)); // выполняю без group_id, и в данном случае документы будут сохранены в моём аккаунте в документах .. если нужен group_id, то id указываем положительным

    парсю ответ и получаю url куда загружать
    2) загружаю файл на указанный url (обычным POST запросом), получаю json ответ и беру от туда file
    3) сохраняю и получаю как attachment:
    string request_path = "https://api.vk.com/method/docs.save?file="+file+"&title=999999999&tags=9999999999&v="+Vk.Version+"&access_token=" + Vk.AccessToken;
                
    var json = JObject.Parse(VkRequest(request_path)); // в json - уже мой attachment, который использую при отправке на стену


    п.с.
    Допустимые форматы: любые форматы за исключением mp3 и исполняемых файлов.
    Ограничения: файл объемом не более 200 МБ.
    Поле POST-запроса: file.
    Ответ написан
  • Сервер для приложение в вк?

    tomnolane
    @tomnolane
    профессиональный разработчик
    что за сервер? точнее что под этим имеете ввиду? Сайт? - т.к. игры используют фреймы - а фреймы берутся с сайта (вашего). Приложение?? для компьютера или телефона?? Если комп, то опять же на сайте размещаете программу клиент, которую скачивают и пользуются. Сама программа может работать как напрямую с вк так и через ваш сайт(сервер). Для телефона - создали приложение. кинули его в плей гугл/апп стор, его скачивают и дальше как с программой - либо через вас запросы идут, либо напрямую

    п.с. если приложение(игра) в виде фрейма - используйте то, на чём умеете работать. Вы же делаете на своём сайте(сервере) и ВК пофигу, что подгружать. Фрейм и в Африке фрейм. Главное https.
    Ответ написан
    7 комментариев
  • Почему vk api возвращает пустое "photo":"[]" ???

    tomnolane
    @tomnolane
    профессиональный разработчик
    $img_src = '4.png'; 
    
    $post_params = array(
    'file1' => '@'.$img_src,
    );
    
    file_get_contents('https://api.vk.com/method/photos.getWallUploadServ...'.$access_token);
    $dataArray=json_decode($data);
    
    $ch = curl_init( $dataArray->response->upload_url );
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false );
    curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params);
    $response = curl_exec( $ch );
    curl_close( $ch );
    print_r($response); 
    }
    Ответ написан
  • Ошибка malformed при загрузке фото в вк через curl?

    tomnolane
    @tomnolane
    профессиональный разработчик
    у API VK есть ограничение - 3 запроса в секунду (любых). Может проблема в том, что много запросов делаете? (получить токен, потом сразу получить сервер для загрузки картинок, загрузить картинку 1, загрузить картинку вторую, сохранить) - и всё это успевается за 1 сек? И из-за этого, при запросе (4 запрос в секунду) на получения адреса сервера для загрузки картинок - возвращается пустая ссылка?
    п.с. если альбом и/или группа не меняется (куда постить) - ненужно вызывать получать перед каждой картинкой метод (получить адрес сервера для загрузки) - можно использовать прежний (при отправке нескольких картинок) (п.с.с. по-моему теперь по новому можно не более 5 картинок за раз....) В любом случае, должно быть не более 3 запросов в секунду при использовании API VK. (я своё приложение сделал не на php конечно, а на с#, и перед каждой загрузкой картинки, я ставлю "паузу" на 450 миллисекунд.
    проблема в $url
    Ответ написан
    4 комментария
  • Загрузка фото в альбом вк, в чем ошибка?

    tomnolane
    @tomnolane
    профессиональный разработчик
    если php версии 7, попробуйте добавить и поставить версию API "v5.62"
    curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
    Ответ написан