Ромка!eu

  • Отдых
  • Работа
Главная — Блоги — Ромка's blog

Это старая (Drupal 6) версия сайта romka.eu. Она больше не обновляется, комментирование материалов отключено. Обновленная версия сайта доступна по адресу http://romka.eu.

Авторизация на Drupal-сайте с помощью аккаунта ВКонтакте

Ромка — Пнд, 05/17/2010 - 00:26

Разработчики ВКонтакте.ру не так давно открыли доступ к OpenAPI — интерфейсу, позволяющему обычным пользователям авторизоваться на сторонних сайтах с использованием своих учетных записей ВКонтакте.ру.

Я выкладываю первую версию модуля vk_openapi, который интегрирует Drupal 6 с Open API. Демонстрацию работы модуля вы можете увидеть на этом сайте. Кнопка для авторизации с помощью учетной записи вКонтакте находится в форме авторизации (в правой колонке внизу) и на странице с формой входа.

Особенности модуля

  • из учетной записи ВКонтакте выбираются все доступные поля и сохраняются в объекте $user;
  • каждому созданному модулем пользователю автоматически может быть назначена роль;
  • в качестве аватара нового пользователя может быть использован автар из профиля пользователя ВКонтакте;
  • созданный модулем пользователь может быть связан с существующим на сайте аккаунтом.

В ближайших планах: обновление статуса пользователя на основе данных из профиля ВКонтакте.

Скачать модуль можно на drupal.org. В продолжении более подробное описание модуля и инструкция по его установке.

Работа модуля

Это пока первая и очень простая реализация модуля, работает он так:

  1. после нажатия пользователем кнопки "войти вКонтакте" модуль получает необходимые данные от сервера вКонтакте.
  2. Далее модуль проверяет есть ли в базе данных Друпала пользователь, связанный с именем, полученным от вКонтакте:
    • если его нет, то создается новый пользователь и связывается с id пользователя ВКонтакте. Внимание! Важная деталь. Если в базе данных есть пользователь с именем не связанным с учетной записью вКонтакте и из вКонтакте приходит пользователь с таким же именем, то такие две учетные записи не будут связаны, для имени нового пользователя будет просто добавлен суффикс _N, где вместо N будет подставлено число.
    • если связанный с учетной записью ВКонтакте пользователь есть, то будет использована найденная учетная запись.
  3. Выбранный пользователь авторизуется в системе.
  4. ВКонтакте не отдает адрес электронной почты, по этому модуль предлагает новому пользователю указать свой e-mail в настройках своего нового аккаунта.

Установка и настройка модуля

  1. Первым делом во ВКонтакте нужно создать приложение типа "Веб-сайт", для этого нужно перейти по ссылке: http://vkontakte.ru/pages.php?act=developers и нажать на кнопку "Подключить сайт".
  2. В настройках созданного приложения нужно указать адрес сайта (http://example.com/) и базовый домен (example.com), а также получить ID приложения и защищенный ключ, все эти четыре параметра нужно будет указать в настройках модуля vk_openapi.
  3. Теперь нужно скачать модуль, если вы этого еще не сделали, распаковать в папку sites/all/modules и включить его стандартными средствами Друпала.
  4. После активации модуля, на странице admin/settings/vk_openapi вы должны указать параметры созданного ранее приложения ВКонтакте.

Все, после выполнения этих действий к формам авторизации будет добавлена кнопка "войти вКонтакте" и пользователи смогут авторизоваться на вашем сайте с помощью учетных записей вКонтакте. При желании вы можете отключить вывод этой кнопки в формах авторизации, тогда в произвольное место страницы сайта нужно будет вставить код:

  1. <div id="vk_login" class="vk_login" style="margin: 0 auto 20px auto;" onclick="doLogin();"></div>

который будет заменен на кнопку.

Я старался сделать этот модуль максимально простым для посетителей сайта — авторизоваться в системе можно всего одним кликом. Мне, например, сильно не нравится реализация Facebook Connect для Друпла тем, что после нажатия кнопки "Connect" пользователя заставляют еще заполнить некоторые поля в форме регистрации. По этому данные от ВКонтакте получаются только один раз, при первом входе в систему, и используются только имя и фамилия пользователя. Теоретически, эти данные можно периодически обновлять, также есть возможность получить данные о фотографиях пользователя и его аватарке, его друзьях изменениях статусов, связать логаут на Друпал-сайте с логаутом из ВКонтакте и т.п. Интересно знать нужен ли кому-нибудь подобный функционал или достаточно того, что уже есть сейчас?

  • Drupal
  • OpenAPI
  • вКонтакте
  • Ромка's blog

Очень, очень! хочется версию

Евгений Козлов → Пт, 01/14/2011 - 17:19

Очень, очень! хочется версию под 7 Drupal

Есть проект

Денис (не проверено) → Чт, 01/27/2011 - 00:23

Роман,
Я знаю вас как самого продвинутого друпал разработчика в России. Данный модуль - очередное подтверждение.
Хотел бы предложить вам работу - или на постоянной основе или на проектной.
Напишите мне, если будет интересно, я расскажу вам о компании и о том, что мы хотим сделать.

Re: Авторизация на Drupal-сайте с помощью аккаунта ВКонтакте

Артемов Константин → Пт, 02/04/2011 - 06:34

Здорово, тоже хотелось бы писать на эту тему, жаль литературного дара нет. Да и не только

Re: Занятно. Подпишусь-ка

Бобров Вячеслав (не проверено) → Пнд, 02/07/2011 - 12:01

Занятно. Подпишусь-ка я на RSS пожалуй

Re: Авторизация на Drupal-сайте с помощью аккаунта ВКонтакте

Бобров Вячеслав (не проверено) → Пт, 02/11/2011 - 16:49

Народ, где вы такие темы для сайтов берете?

ошибка при авторизацции по кнопке через контактную форму

Алексей Рубель → Сб, 02/12/2011 - 03:16

http://clip2net.com/s/LLMz -
выскакивает такое окно при авторизации -. в чем может быть причина ?

и еще вопрос :
http://clip2net.com/s/LLS7
о каком урле здесь идет речь ? урл после входа на сайт ? Или это должен быть урл профиля в контакте ? Неплохо было бы в комментариях к полю дать несколько слов пояснений. Заранее спасибо !

вот такая

Anonymous (не проверено) → Ср, 02/16/2011 - 14:18

вот такая проблема
http://s015.radikal.ru/i331/1102/8f/c3d9e6bba095.jpg

как решать?

Drupal 7

Garik (не проверено) → Пнд, 03/21/2011 - 01:13

Хотелось бы увидеть обновление этого модуля для 7й версии Друпала

D7

Алексей Костин → Пт, 06/17/2011 - 03:12

Garik wrote:
Хотелось бы увидеть обновление этого модуля для 7й версии Друпала

Да, Роман, есть ли какие-то планы по портированию на D7? Или может посоветуете какое-то более комплексное решение (кроме Loginza), где ВКонтакт будет доступен для логина наряду с другими соцсетями?

Re: А вы случайно не из Москвы?

Меховщиков Руслана → Втр, 05/24/2011 - 20:17

А вы случайно не из Москвы?

Re: Авторизация на Drupal-сайте с помощью аккаунта ВКонтакте

Меховщиков Руслана → Ср, 06/01/2011 - 21:52

Прикольная тачка на прокачку:))риаритетные блин!:))недавно в Москве такие катались:))точнее выставка их была..было любопытно:)))

проверка на уже существующий e-mail

sergeysynergy (не проверено) → Чт, 06/30/2011 - 19:32

Большое спасибо за отличный нужный модуль.

Если включить опцию обязательного e-mail (Oblige users to enter e-mail.) то пользователь при регистрации может указать любой, даже уже существующий у пользователя друпала e-mail. Таким образом оба пользователя не смогут сохранить свой аккаунт - e-mail получается дублируется.

Также небольшой вопрос: а что даёт подтверждение адреса e-mail, которое приходит при регистрации?

Сорри, туплю, видимо тоже

sergeysynergy (не проверено) → Чт, 06/30/2011 - 21:04

Сорри, туплю, видимо тоже самое, что и при обыкновенной регистрации )

Роман, в какую сторону

semein (не проверено) → Чт, 09/08/2011 - 10:52

Роман, в какую сторону копать: код преобразовывается в кнопку только на страничке /admin. во всех остальных местах (и в блоке, и в форме авторизации на главной сайта), он не преобразуется (внутри дива ничего не появляется).

на /admin стандартный garland

semein (не проверено) → Чт, 09/08/2011 - 10:53

на /admin стандартный garland

hostinh nic.ru and vk api

vitsss (не проверено) → Пнд, 01/30/2012 - 22:52

бился пару часов, статья очень помогла но ни где ни слова не было сказано про "json".
Включил и все работает.

  • « первая
  • ‹ предыдущая
  • 1
  • 2
  • 3
  • 4

Обо мне

Всем привет!
Меня зовут
Роман Архаров, я профессиональный веб-разработчик, программирую на языках PHP, Python и Action-Script, в работе использую фреймворки Drupal и Django. В этом блоге я размещаю заметки и статьи, связанные с моей работой, отдыхом и другими интересными мне темами.

Похожие заметки

  • Пример разработки плагина для модуля CCK
  • Несколько статей о Друпале
  • Swftools и модуль Pdf2SWfField для Друпала
  • Темизация Drupal. Часть 2. Анатомия темы оформления Drupal
  • Темизация Drupal. Часть 1

Популярные заметки

  • Авторизация на Drupal-сайте с помощью аккаунта ВКонтакте
  • Перетаскивание строк таблицы. Table drag and drop — плагин для jQuery
  • Темизация Drupal. Часть 3. Основы Drupal Forms API и темизация форм
  • Темизация Drupal. Часть 4. Темизация Views
  • AJAX. Обмен данными между клиентом и сервером, закачка на сервер файлов без перезагрузки страницы при помощи библиотеки jQuery.
  • Кеширование на Drupal-сайте. Сравнение встроенного в Drupal кеша, статического файлового кеша (модуль Boost) и Varnish
  • Тестирование модуля "Inner poll"
  • Несколько панорам из путешествия по Перу и Боливии
  • Arduino + bluetooth, небольшая проблема
  • Пример разработки плагина для модуля CCK

Подписка


Последние комментарии

  • drupal-admin → Кеширование на Drupal-сайте. Сравнение эффективности встроенного в Drupal кеша, статического файлового кеша (модуль Boost) и Var → Отличная статья
  • Меховщиков Руслана → Проверка имени пользователя на наличие букв из разных алфавитов → Re: Читал про это уже на
  • Вероника → Куба. Лето 2008. Часть 3 → По поводу "приветливых жителей" Тринидада
  • Sfero → Статья в PC Magazine/RE. Drupal: разработка модуля → Немного о контенте
  • RemaGe → Статья в PC Magazine/RE. Drupal: разработка модуля → -)
  • Ромка → Статья в PC Magazine/RE. Drupal: разработка модуля → Да, будет сборка, та которую
  • RemaGe → Статья в PC Magazine/RE. Drupal: разработка модуля → -)
  • anatinge → Поездка в Киев → спасибо :)
  • Ромка → Поездка в Киев → Да, в общем-то, ничего
  • GogA → Поездка в Киев → Заинтриговал, что там за

Новые заметки

  • Кеширование на Drupal-сайте. Сравнение встроенного в Drupal кеша, статического файлового кеша (модуль Boost) и Varnish
  • Любопытное поведение модуля syslog в шестом Друпале (баг?)
  • Arduino + bluetooth, небольшая проблема
  • Гугл 1 марта прекратил поддержку сервиса Google Friend Connect
  • Проба пера в HTML5 + canvas. Эффект ластика
  • Шесть рукопожатий
  • Доклад на DrupalConfMoscow 2011
  • Статусы разных сущностей в Друпале 6
  • Футер, прибитый к низу страницы
  • Путешествие по Перу и Боливии. Часть 2

Тэги

Drupal jquery Куба Лето 2007 Лето 2008 Отдых Работа Штуки-дрюки лето модуль статья цитата
еще тэги

Навигация

  • Exchange rate
  • Переход по внешней ссылке
  • Последние сообщения
  • Фотогалереи

Курсы валют

  • 100 Казахстанских тенге — 21,3687 (-0.43)
  • 10 Украинских гривен — 27,2852 (-13.04)
  • 1 Китайский юань — 10,2706 (-40.98)
  • 100 Японских иен — 53,5332 (+12.67)
  • 1 Доллар США — 65,6210 (+33)
  • 1 Евро — 69,8076 (+29.42)
  • 10000 Белорусских рублей — 36,3310 (-2.51)
  • 1 Турецкая лира — 22,9540 (+4.99)

10 случайных заметок

  • Новый год 2008. Часть 4. Копенгаген, Оденсе.
  • С Новым Годом!
  • Гугл 1 марта прекратил поддержку сервиса Google Friend Connect
  • Новый год 2008. Часть 3. Гётеборг.
  • Разработка модуля для Drupal. Часть2
  • Новый год 2009. Амстердам, Гаага, Роттердам и Кёльн
  • Swftools и модуль Pdf2SWfField для Друпала
  • Вращение изображений при помощи Javascript
  • Validation — восхитительный короткометражный фильм
  • Доклад на DrupalConfMoscow 2011

Случайные фото

Оденсе
Копенгаген, Кристиания, Граффити 5
Море
Тринидадские спортсменчики
Пеликан
Собака
Арка
Осло, Карл Юхан Гате
Бронзовое море
Взгляд в будущее
Это лыжники. В мае. На улице +20.
Вид на Осло из замка Акерхус
Копенгаген, Кристиания, Граффити 6
Я и мой автопарк :))
Замок Акерхус вечером
Тринидад. Лошадка держит домик
  • Отдых
  • Работа

При использовании материалов с сайта, пожалуйста, ставьте ссылку на источник. E-mail для связи: mne@romka.eu.