Vk auth что это такое

Здравствуйте. Вот начинаю осваивать веб, а именно авторизацию через соцсети, так что не судите строго.
Хочу разобраться, как работает данный протокол.
Сначала опишу, как я понимаю принцип работы.
Мы регистрируем приложение вконтакте для получения доступа к использованию их АПИ. Получаем секретный код, который будем использовать при запросе. Затем мы делаем чудо кнопку «Войти через Вконтакте». При этом вешаем на нее запрос к АПИ, в котором указываем редирект, права и так далее. Пользователь нажимает и попадает на окно для подтверждения использования его данных.

Получаем так называемый token на разрешение или же отказ. После подтверждения мы попадаем на ссылку, указанную в редиректе, то есть на наш сайт.
Получаем в JSON или XML формате данные пользователя. И тут начинаются вопросы.
1. При получении данных пользователя мы создаем новую запись в таблице пользователей. Пароль должен генерироваться автоматически?
2. Как проходит процесс при повторной авторизации через вконтакте? Мы посылаем запрос к апи, если опять получаем токен, то смотрим в базе, нету ли такого пользователя по ид, если есть, то автоматически выполняем вход, если нет, то регистрируем и тоже входим. Или другой принцип работы?

VK API #1 Receiving access token (standalone app)


3. Следует ли постоянно хранить токен, полученный при регистрации? Объясните, пожалуйста, общий принцип работы при повторной регистрации, и если я неправильно понял, то и для перовой.
Спасибо заранее.

Отслеживать

34.3k 15 15 золотых знаков 64 64 серебряных знака 93 93 бронзовых знака

задан 16 окт 2014 в 16:59

2,389 6 6 золотых знаков 29 29 серебряных знаков 42 42 бронзовых знака

Источник: ru.stackoverflow.com

DarkXaHTeP/vk-auth

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags

Nothing to show

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

  • Local
  • Codespaces

HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

Как работает OAuth 2 — введение (просто и понятно)

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

Latest commit message
Commit time

README.md

Authorization in Vkontakte social network as standalone/mobile application. Allows you to get vk token with the help of PhantomJS headless browser.

Еще по теме:  Как сохранять пароли ВК в опере

Tasks in Ready Tasks in Progress

Using vk-auth is easy enough; it accepts two parameters in it’s constructor (applicationId and required permissions) and provides single method for authorization:

  • Issue with markup change on permissions page fixed
  • Dependencies are updated
  • PhantomJS was updated to version 2
  • Issue with form submit fixed
  • Updates in VK URLs (thanks to Dmitriy)
  • Error messages do not contain new line symbol
  • First release
  • Small code improvements
  • Tests for node.js part of module
  • Daily build to check that module is still working
  • ‘error’ event is not emited when no listeners attached and callback is present
  • Should work again after VK urls updates
  • Error for wrong credentials is now displayed again
  • PhantomJS is now started by ‘execFile’ command instead of ‘exec’
  • Result format changed to look the same way as vk response
  • All errors including VK and wrong credentials errors are now passed through ‘err’ callback parameters
  • Initial module version

To get applicationId you need to create vk app here.

You can pass app permissions as a string or array e.g.

var permissions = ‘friends,video,offline’; var anotherPermissons = [ ‘wall’, ‘friends’ ];

To get more information about available permissions visit Application Access Permissions page

vkAuth.authorize(login, password, callback)

Login — user’s email or phone number

Password — user’s password

Callback(err, tokenParams) — accepts two parameters — error and token parameters

You can subscribe to events emitted by authorization module instead of passing callback. There are two events available:

«auth» — Authorization succeed

«error» — Error happened during authorization

Here is an example of received token parameters:

access_token: 801edadc2f0d1898676e2804ec50b9990801dcd3fd5e9bc197898c19b9d796596d79c03278489f3e88 expires_in: 86400 user_id: 49923862 >

To read more about this parameters go to Client Application Authorization page.

Feel free to ask questions and post ideas, as well as send pull requests. If you want to support me, leave tip at Gratipay:

About

Authorization in Vkontakte social network as standalone/mobile application for Node.JS servers

Источник: github.com

[Примеры] Авторизация (получение access token) с помощью OAuth 2.0 Вконтакте (VK) и работа с API Вконтакте на PHP и JS

Здравствуй, дорогой читатель. Если тебе хотя бы однажды доводилось работать с API Вконтакте и при этом писать все на python, вероятно, авторизация приложения заставила тебя сделать несколько приседаний, после которых ног либо не чувствуешь и падаешь в обморок, либо вкачиваешь квадрицепс и все же пробиваешь API, как Ван Дамм.
По какой-то причине этот, казалось бы, самый непримечательный этап поначалу отнимает огромное количество сил и времени. Моя задача: помочь читателям Хабра избежать травм ног.

Далее я предлагаю рассмотреть небольшую библиотеку, позволяющую в одну строчку авторизовать свое приложение для конкретного пользователя и получить access_token. В конце статьи представлена ссылка на github-репозиторий этой библиотеки с quickstart’ом в README-файле.

Google

1. Перейдите по ссылке и примите условия пользования.

2. Создайте новый проект:

3. Введите в поиске «API» и перейдите в раздел «APIs Services» (например, через поиск) и настройте «OAuth consent screen»:

Далее заполните необходимые данные и сохраните их:

8. Перейдите во вкладку «Credentials», нажмите кнопку «create credentials» и создайте QAuth client ID:

9. Выберите тип «Web application» и добавьте «Authorized redirect URIs» :

Необходимо вставить адрес: https://домен/auth/google/callback, где слово «домен» необходимо заменить доменом вашего магазина, например myshop.ru

Важно: если ваш домен включает «www», то данный адрес тоже должен содержать «www».

10. После создания клиента будут доступны идентификатор и ключ:

Еще по теме:  Как скопировать ссылку на музыку в ВК для мта

11. Скопируйте эти данные и введите в бэк-офисе вашего магазина. Впишите «Идентификатор клиента» в поле «ID приложения» бэк-офиса, а «Секрет клиента» в поле » API токен приложения»:

Все готово к работе. Вы также можете добавить описание и логотип своего приложения.

Задача

Хотим небольшой модуль, который позволяет провести авторизацию красиво, универсально и максимально надежно, а использовать который очень просто. Стоит сказать, что данное решение является усовершенствованием и обобщением варианта, предложенного в этой статье.

Итак, используем python3.5, библиотеку для html запросов requests и getpass для скрытого ввода пароля.

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

, отправлять ответ и наконец получить желанный access_token.

Создаём нужные страницы

Перед тем, как выложим чанки с фрагментами кода, создадим пять страниц.

  • Страница входа (1):
    страница, содержащая форму входа
  • Сброс пароля (2):
    страница, где пользователи могут запросить восстановление пароля
  • Сброс пароля, обработчик (3):
    скрытая страница, которая будет на самом деле сбрасывать пароль. Пользователи её видеть не будут.
  • Страница только для пользователей (4):
    страница, содержимое которого видят только авторизованные пользователи сайта
  • Страница выхода (5):
    страница, на которую переадресовывается пользователь после успешного выхода

Вот так у меня выглядит дерево ресурсов в данный момент. Имейте виду, что у вас ID ресурсов будет другой. В данном примере ничего кроме страниц для компонента «Login» нету.
Дальше, нам нужно назначить правильные права для пользователей и ресурсов.

Реализация

Начнем с создания класса. При инициализации будем требовать список «разрешений», к которым приложение хочет получить доступ, id этого приложения и версию API VK. Плюсом добавим несколько необязательных параметров, значение каждого из которых прояснится далее.
Метод __init__
class VKAuth(object): def __init__(self, permissions, app_id, api_v, email=None, pswd=None, two_factor_auth=False, security_code=None, auto_access=True): «»» Args: permissions: list of Strings with permissions to get from API app_id: (String) vk app id that one can get from vk.com api_v: (String) vk API version «»» self.session = requests.Session() self.form_parser = FormParser() self.user_id = None self.access_token = None self.response = None self.permissions = permissions self.api_v = api_v self.app_id = app_id self.two_factor_auth= two_factor_auth self.security_code = security_code self.email = email self.pswd = pswd self.auto_access = auto_access if security_code != None and two_factor_auth == False: raise RuntimeError(‘Security code provided for non-two-factor authorization’)

Как было сказано в уже упомянутой статье, нам необходимо искусно ворочать cookie и redirect’ы. Все это за нас делает библиотека requests с объектом класса Session. Заведем и себе такой в поле self.session. Для парсинга html документа используется стандартный класс HTMLParser из модуля html.parser.

Для парсера тоже написан класс (FormParser), разбирать который большого смысла нет, так как он почти полностью повторяет таковой из упомянутой статьи. Существенное отличие лишь в том, что использованный здесь позволяет изящно отклонить авторизацию приложения на последнем шаге, если вы вдруг передумали.

Поля user_id и access_token будут заполнены после успешной авторизации, response хранит в себе результат последнего html запроса.

Пользователю библиотеки предоставим один-единственный метод – authorize, который совершает 3 шага:

  1. запрос на авторизацию приложения
  2. авторизация пользователя 2.1 введение кода-ключа в случае двух-факторной авторизации
  3. подтверждение разрешения на использование permissions

Пройдемся по каждому шагу.

Шаг 1. Запрос на авторизацию приложения

Аккуратно составляем url запроса (про параметры можно прочитать здесь), отправляем запрос и парсим полученный html.

Метод authorize для Шага 1

def authorize(self): api_auth_url = ‘https://oauth.vk.com/authorize’ app_id = self.app_id permissions = self.permissions redirect_uri = ‘https://oauth.vk.com/blank.html’ display = ‘wap’ api_version = self.api_v auth_url_template = ‘?client_id=redirect_uri=v= # handling two-factor authentication # expecting a security code to enter here if self.two_factor_auth: self._two_fact_auth()

Метод _log_in для Шага 2

def _log_in(self): if self.email == None: self.email = » while self.email.strip() == »: self.email = input(‘Enter an email to log in: ‘) if self.pswd == None: self.pswd = » while self.pswd.strip() == »: self.pswd = getpass.getpass(‘Enter the password: ‘) self._submit_form() if not self._parse_form(): raise RuntimeError(‘No element found. Please, check url address’) # if wrong email or password if ‘pass’ in self.form_parser.params: print(‘Wrong email or password’) self.email = None self.pswd = None return False elif ‘code’ in self.form_parser.params and not self.two_factor_auth: raise RuntimeError(‘Two-factor authentication expected from VK.nChange `two_factor_auth` to `True` and provide a security code.’) else: return True

Еще по теме:  Вконтакте dj вирус или нет

Метод _two_fact_auth для Шага 2

def _two_fact_auth(self): prefix = ‘https://m.vk.com’ if prefix not in self.form_parser.url: self.form_parser.url = prefix + self.form_parser.url if self.security_code == None: self.security_code = input(‘Enter security code for two-factor authentication: ‘) self._submit_form() if not self._parse_form(): raise RuntimeError(‘No element found. Please, check url address’)

Подключаем двухфакторную авторизацию Приступаем к настройке

Создаём новое приложение «ВКонтакте»

Перед тем, как писать код, нам нужно зарегистрировать новое приложение. Делается это просто, заходим в свой профиль, переходим в раздел приложения и в нем кликаем на кнопку «Управление». В этом разделе вы увидите список всех приложений, которыми вы пользуетесь и кнопку «Создать приложение», жмём по ней. Заполняем название и выбираем пункт «Веб-сайт».

После этого появятся два новых поля, которые также заполняем и жмём «Подключить сайт». В следующем окне вам останется подтвердить регистрацию.

Вот так просто и быстро регистрируется новое приложение «ВКонтакте». Теперь переходим в настройки и копируем ID приложения и защищенный ключ в блокнот. На этом работа с социальной сетью заканчивается.

Создаём необходимые группы пользователей и группы ресурсов

MODX Revo имеет очень гибкую систему детализации прав, когда дело доходит до разрешений для пользователей, но в данной теме мы сделаем только то, что нам нужно не заходя глубоко в тему. И так, приступим. 1. Безопасность → Группы Ресурсов
Нажимаем на «Создать группу ресурсов» и называем её «Только для пользователей», например. Нажимаем «Сохранить» и всё, на данной странице больше ничего не меняем.

2. Безопасность → Контроль доступа
На первой вкладке «Группы пользователя» нажимаем на «Новая группа пользователей». Новую группу назовём «Пользователи» и нажмём «Сохранить». Группа пользователей будет иметь доступ к ресурсам «Только для пользователей». Зачем это нам, мы узнаем чуть позже в рамках этого урока.

3. На этой же странице (
Безопасность → Контроль доступа
), щелкнём правой кнопкой мыши на созданную группу пользователей и выберем «Редактировать группу пользователей». Далее переходим на вкладку «Доступ к группам ресурсов» и щёлкаем на «Добавить группу ресурсов». Для правильной работы, должны быть как минимум такие параметры:
Группа ресурсов:
Только для пользователей (тот, который мы только что создали)
Минимальная роль:
Member-9999
Политика доступа:
Load, List and View
Контекст:
web И сохраняем.
4. Безопасность → Управление пользователями
Создаём «нового пользователя» и тем самым проверяем, как будет работать разграничение прав доступа для пользователей. В данном случае, используйте простой логин и пароль, ибо нам, как я уже выше писал — важно убедиться в том, что новый пользователь находится в группе «Пользователи». Для этого переходим на вкладку «Права доступа» и нажимаем на «Добавить пользователя в группу».
Группа пользователя:
Пользователи
Роль:
Member Затем нажимаем «сохранить» у окошка, а затем
ещё раз
в правом углу панели управления. Это должно нам гарантировать, что новый пользователь может войти в систему с правами «Пользователя», чтобы смотреть страницу с правами «Только для пользователей». Теперь вернёмся назад к страницам, дабы добавить сниппеты и фрагменты кода на соответствующие страницы.

Источник: vsegdasvami.ru

Рейтинг
( Пока оценок нет )
Загрузка ...