За последние 24 часа нас посетили 22337 программистов и 996 роботов. Сейчас ищет 641 программист ...

Как проверить вступил ли человек в твою вк группу?

Тема в разделе "PHP для новичков", создана пользователем Noob_User, 8 авг 2020.

  1. Noob_User

    Noob_User Новичок

    С нами с:
    8 авг 2020
    Сообщения:
    3
    Симпатии:
    0
    Всем привет! В программировании я особо не шарю, но в моём вопросе оно особо и не понадобится, вопрос решается за пару строк.
    Мне нужно сделать так чтобы при авторизации на сайте, скрипт проверял состоит ли человек в моей группе, если не состоит чтобы его перекидывало на заданую мной ссылку ( /lobby.php ) где ему предложат подписаться для продолжения. Знаю что это можно сделать через VK API и функцию groups.isMember

    Вот код с помощью которого можно всё подключить

    PHP:
    1. $community = айди группы;
    2. $profile = айди профиля;
    3. $answer = json_decode(file_get_contents("http://api.vk.com/method/groups.isMember?gid=".$community."&uid=".$profile));
    4. if($answer->response == 0){
    5.  
    6. header("Location: /lobby.php");
    Вот мой код для авторизации

    PHP:
    1. if  (!empty($_GET['code']))  {
    2.     $error_msg = "ОШИБКА АВТОРИЗАЦИИ!";
    3.     $token = json_decode(file_get_contents('https://oauth.vk.com/access_token?client_id='.$cfg["site"]["vk_app"].'&client_secret='.$cfg["site"]["vk_app_key"].'&code='.$_GET['code'].'&redirect_uri='.$cfg["site"]["vk_app_s"]), true);
    4.     $fields       = 'first_name,last_name,photo_50';
    5.     $uinf = json_decode(file_get_contents('https://api.vk.com/method/users.get?uids='.$token['user_id'].'&fields='.$fields.'&access_token='.$token['access_token'].'&v=5.80'), true);
    6.  
    7.  
    8.     if(empty($uinf['response'][0]['first_name']) or empty($token['user_id']) or empty($token['access_token'])) exit($error_msg);
    9.  
    10.     $_SESSION['first_name']   = $uinf['response'][0]['first_name'];
    11.     $_SESSION['last_name']    = $uinf['response'][0]['last_name'];
    12.     $_SESSION['uid']          = $token['user_id'];
    13.  
    14.  
    15.     $db = new SafeMySQL($cfg["connect"]);
    16.     $user = $db->getRow("SELECT * FROM `users` WHERE `vk_id` = ?i", $_SESSION['uid']);
    17.     if(!$user) {
    18.         $db->query("INSERT INTO `users`(`vk_id`, `name`) VALUES (?i,?s)",$_SESSION['uid'],$_SESSION['first_name']." ".$_SESSION['last_name']);
    19.      
    20.     }
    21.  
    22.     header ("Location: /");
    23. }else {
    24.     header ("Location: https://oauth.vk.com/authorize?client_id=".$cfg["site"]["vk_app"]."&redirect_uri=".$cfg["site"]["vk_app_s"]."&response_type=code");
    25. }


    Если кто нибудь знает как это можно всё настроить, умоляю помогите !
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    Кто-то знает..
    У вас все есть, соедините два куска кода. После того как авторизовались или зарегистрировали пользователя - проверяете по id пользователя - в группе он или нет, ну и пишите наверное в бд в профиль пользователя флаг участия в группе
     
  3. Noob_User

    Noob_User Новичок

    С нами с:
    8 авг 2020
    Сообщения:
    3
    Симпатии:
    0
    Ребят, мне пришло сообщение от поддержки вк. Кто нибудь может мне помочь / или за деньги?

    Авторизуете пользователя, получаете его токен, у которого есть доступ к groups, вызываете https://vk.com/dev/groups.isMember, тем самым проверяете, является ли он участником сообщества или нет. Если не является, то можно показывать экран с просьбой вступить в группу и кнопкой проверки (пользователь подписывается, нажимает на кнопку, Вы повторно вызываете groups.isMember. Можно и не запрашивать токен с доступом к группам, а вызывать groups.isMember со своим токеном/токеном сообщества. Но если у Вас несколько тысяч авторизаций в день, то можно нарваться на суточные лимиты на вызов groups.isMember со своим токеном/токеном сообщества.
     
  4. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @Noob_User я так понимаю у вас эта штука не работает?
    PHP:
    1. $answer = json_decode(file_get_contents("http://api.vk.com/method/groups.isMember?gid=".$community."&uid=".$profile));
    2. if($answer->response == 0){
    3.     header("Location: /lobby.php");
    4. }
    а с остальным все в порядке?
     
  5. Noob_User

    Noob_User Новичок

    С нами с:
    8 авг 2020
    Сообщения:
    3
    Симпатии:
    0
    Я попробовал сам подшаманить, ничего не получилось. Ты разбираешься? Может договоримся?
     
  6. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    что вот тут вот?
    PHP:
    1. print_r($answer);