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

    dimastik1986
    @dimastik1986
    учусь
    а почему нельзя раздробить список и проходить по нему за несколько раз?
    Ответ написан
    Комментировать
  • VK api SDK проблема с адресами подключаемых функций, как решить?

    dimastik1986
    @dimastik1986 Автор вопроса
    учусь
    VK сами не знают ничего ))
    5c18334a536f0585772894.jpeg
    Ответ написан
    Комментировать
  • Как получить список всех участников группы?

    dimastik1986
    @dimastik1986 Автор вопроса
    учусь
    помогло добавить в конец запроса }).items;

    API.groups.getMembers({"group_id":"123377669","count":"1000","offset":"0"}).items;
    Ответ написан
    Комментировать
  • VK api SDK установка и подключение, как правильно?

    dimastik1986
    @dimastik1986 Автор вопроса
    учусь
    Вот рабочий вариант, проблема была в том, что нельзя использовать классы, которые находятся не в одном пространстве имён с текущим сценарием.

    require_once __DIR__.'/vendor/autoload.php'; 
    
    use \VK\Client\VKApiClient;
    use \VK\OAuth\VKOAuth;
    use \VK\OAuth\VKOAuthDisplay;
    use \VK\OAuth\Scopes\VKOAuthUserScope;
    use \VK\OAuth\VKOAuthResponseType;
    
    $vk = new VKApiClient(VER);
    
    $oauth = new VKOAuth(); 
    $client_id = API_CLIENT_ID; 
    $redirect_uri = REDIR; 
    $display = VKOAuthDisplay::PAGE; 
    $scope = array(VKOAuthUserScope::WALL, VKOAuthUserScope::GROUPS); 
    $state = 'secret_state_code'; 
    
    $browser_url = $oauth->getAuthorizeUrl(VKOAuthResponseType::CODE, $client_id, $redirect_uri, $display, $scope, $state);
    
    print $browser_url;
    Ответ написан
    2 комментария
  • Как сформировать запрос методом execute в VK api?

    dimastik1986
    @dimastik1986 Автор вопроса
    учусь
    нашел в инете внятный пример, почти разобрался!
    единственный момент - вот я сформировал запросы:
    $code .= 'var out = API.users.get({...});'; 
    $code .= 'var out = out + API.groups.getById({...});'; 
    $code .= 'var out = out + API.stats.get({...});'; 
    $code .= 'return out;';

    отправил все это дело
    $execute = json_decode(GetVK('https://api.vk.com/method/execute', array(
        'code' => $code,
        'access_token' => mc_decrypt($_SESSION['UserInfo']['access_token'], ENCRYPTION_KEY),
        'v' => $System['api']['version']
    )), true);

    на выходе получил массив $execute['response'], получается на следующем уровне у меня 3 массива, которые соответствуют 3 моим запросам в порядке очереди!? Правильно?

    ------
    выкладываю для тех, кому может пригодиться
    1. удобная функция для запросов
    function vk_query($url, $params) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_IPRESOLVE, CURLOPT_IPRESOLVE_V4);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_REFERER, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
        $result = curl_exec($ch);
        curl_close($ch);
        return $result;
    }


    2. пример запроса
    $members_all = array();
    for ($i=0; $i<$query_count; $i++){
      $offset_out = $i*25000;
        $query = "
          var members = API.groups.getMembers({\"group_id\": $group_vk_id, \"count\":1000, \"fields\": \"sex, bdate\", \"offset\": $offset_out}).items;
          var offset = 1000;
          while (offset < 25000 && (offset+$offset_out < $group_vk_count)){
          members = members + API.groups.getMembers({\"group_id\": $group_vk_id, \"count\":1000, \"fields\": \"sex, bdate\",\"offset\": ($offset_out + offset)}).items;
          offset = offset + 1000;
          };
          return members;
        ";
      $result = json_decode(vk_query('https://api.vk.com/method/execute', array(
        'access_token' => $_SESSION['access_token'],
        'code' => "$query",
        'v' => '5.37'
      )), true);
      //echo '<pre>';
      //print_r($result);
      $members_all[] = $result;
    }


    источник
    Ответ написан
    Комментировать