Гайд Подключение авторизации через Вконтакте

  • Автор темы Автор темы HORMAN
  • Дата начала Дата начала
Забаненный
Забаненный
Статус
Оффлайн
Регистрация
22 Фев 2018
Сообщения
1,923
Реакции
524
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Многие сервисы базируют свою систему пользователей на данных из вконтакте. Эта система работает примерно вот так:

Первым делом необходимо создать и настроить приложение Вконтакте - переходим по ссылке, после чего заполняем все в данном виде

1609256342644.png


Заполняем все так, как я указал выше, подтверждаем создание приложения.

Если у вас уже имеется конфигурационный файл, то туда нужно будет вбить пару переменных, а точнее три. (url, code, id)

Сами переменные - ULR (Прямая ссылка на страницу со скриптом), CODE (Секретный код), ID (Id приложения), version
Все данные можно взять на странице с настройками приложения (вк)

PHP:
Expand Collapse Copy
define('id', 'x');
define('url', 'y');
define('code', 'z');
define('version', '5.52');


Переходим в сам файл (скрипт)

Создаем ссылочку, в href вставляем следующий адрес -
Пожалуйста, авторизуйтесь для просмотра ссылки.
<?= id из конфига?>&display=page&scope=email&redirect_uri=<?=url из конфига?>&response_type=code

Из того, что может быть непонятно в ссылке - скоуп. Scope - это дополнительные данные, которые мы запрашивам у пользователя, в данном случае - это Вконтакте. Подробнее про разновидности скоупов можно почитать в документации.

Дальше - пишем обработчик информации по нажатию на кнопку. Вк нам возвращает гетом code.

PHP:
Expand Collapse Copy
<?php

if(isset($_GET['code'])) {

    $token = json_decode(file_get_contents('https://oauth.vk.com/access_token?client_id='.id.'&redirect_uri='.url.'&client_secret='.code.'&code='.$_GET['code'].'&v='.version.''), true);

    if ($token){
        $data = json_decode(file_get_contents('https://api.vk.com/method/users.get?user_id='.$token['user_id'].'&email='.$token['email'].'&access_token='.$token['access_token'].'&fields=first_name,last_name,id,photo_max&v='.version.''), true);
        if ($data){

            $data = $data['response'][0];

            $vk_data = array(
                'name' => $data['first_name'];
                'surname' => $data['last_name'];
                'email' => $data['email'];
                'uid' => $data['id'];
                'photo' => $data['photo_max'];

            var_dump($vk_data);
            // записываем полученные данные

        }else{
            exit('Ошибка получения данных');
        }
    }else{
        exit('Ошибка обработки данных');
    }
}

?>

Если что непонятно - пишите по определенному моменту, объясню.
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
во-первых не URL, а URI. (uri)

во-вторых зачем в $vk_name ' ' в начале и в конце?

в-третьих я такой код уже видел

в-четвертых можно сделать и красивее
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
во-первых не URL, а URI. (uri)

во-вторых зачем в $vk_name ' ' в начале и в конце?

в-третьих я такой код уже видел

в-четвертых можно сделать и красивее
Красота? Что? Я бы сделал массив из данных вк в идеале. Vk_name я сцепляю фамилию и имя. Если ты хранишь данные (имя, фамилию раздельно) - разделяй, пожалуйста.

C названием переменных - у каждого свой вид.
Именно такой код ты видеть не мог, так как я расписал это только что.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Красота? Что? Я бы сделал массив из данных вк в идеале. Vk_name я сцепляю фамилию и имя. Если ты хранишь данные (имя, фамилию раздельно) - разделяй, пожалуйста.

C названием переменных - у каждого свой вид.
Именно такой код ты видеть не мог, так как я расписал это только что.
Действительно, давай ты еще код заобфускатишь свой код и скажешь... нуу красота не главное, ведь так? Нет.

У тебя вначале '', они вообще никаким макаром не нужны. Понимаешь?
1609329563252.png


Как тебя сделали вообще куратором?

UPD:

и вообще должно быть так:

$vk_name = $data['first_name'].' '.$data['last_name'];

Такой код я точно уже видел, в одном из видео гайдов. Определенно видел.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Действительно, давай ты еще код заобфускатишь свой код и скажешь... нуу красота не главное, ведь так? Нет.

У тебя вначале '', они вообще никаким макаром не нужны. Понимаешь?
Посмотреть вложение 122236

Как тебя сделали вообще куратором?

UPD:

и вообще должно быть так:

$vk_name = $data['first_name'].' '.$data['last_name'];

Такой код я точно уже видел, в одном из видео гайдов. Определенно видел.
Хорошо, я вас понял, сделал по-другому.
 
во-первых не URL, а URI. (uri)

во-вторых зачем в $vk_name ' ' в начале и в конце?

в-третьих я такой код уже видел

в-четвертых можно сделать и красивее
тут дело даже не в красоте, а в читабельности кода, складывается такое ощущение, что тему оформлял не куратор раздела веб программирования, а школьник, который только вчера пхп начал изучать

По теме: лучше бы ты сделал обработку ошибок от вк, а не ошибки при парсинге ответа
 
да в доке глянь там апдейтнулось все
 
Назад
Сверху Снизу