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

Забаненный
Статус
Оффлайн
Регистрация
22 Фев 2018
Сообщения
1,902
Реакции[?]
532
Поинты[?]
3K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Многие сервисы базируют свою систему пользователей на данных из вконтакте. Эта система работает примерно вот так:

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

1609256342644.png

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

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

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

PHP:
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:
<?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('Ошибка обработки данных');
    }
}

?>
Если что непонятно - пишите по определенному моменту, объясню.
 
Последнее редактирование:
Забаненный
Статус
Оффлайн
Регистрация
11 Янв 2018
Сообщения
2,375
Реакции[?]
454
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
во-первых не URL, а URI. (uri)

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

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

в-четвертых можно сделать и красивее
 
Забаненный
Статус
Оффлайн
Регистрация
22 Фев 2018
Сообщения
1,902
Реакции[?]
532
Поинты[?]
3K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
во-первых не URL, а URI. (uri)

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

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

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

C названием переменных - у каждого свой вид.
Именно такой код ты видеть не мог, так как я расписал это только что.
 
Забаненный
Статус
Оффлайн
Регистрация
11 Янв 2018
Сообщения
2,375
Реакции[?]
454
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Красота? Что? Я бы сделал массив из данных вк в идеале. Vk_name я сцепляю фамилию и имя. Если ты хранишь данные (имя, фамилию раздельно) - разделяй, пожалуйста.

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

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

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

UPD:

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

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

Такой код я точно уже видел, в одном из видео гайдов. Определенно видел.
 
Забаненный
Статус
Оффлайн
Регистрация
22 Фев 2018
Сообщения
1,902
Реакции[?]
532
Поинты[?]
3K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Действительно, давай ты еще код заобфускатишь свой код и скажешь... нуу красота не главное, ведь так? Нет.

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

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

UPD:

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

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

Такой код я точно уже видел, в одном из видео гайдов. Определенно видел.
Хорошо, я вас понял, сделал по-другому.
 
Участник
Статус
Оффлайн
Регистрация
31 Дек 2018
Сообщения
862
Реакции[?]
225
Поинты[?]
0
Товары в продаже
1
во-первых не URL, а URI. (uri)

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

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

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

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