Модуль для авторизации с использованием учетной записи ВКонтакте

Аватар пользователя Ромка Ромка 17 мая 2010 в 11:09

Разработал модуль для авторизации пользователей на Друпал-сайте с использованием ВКонтакте OpenAPI.

Скачать модуль можно на drupal.org. Демо работы модуля доступно тут: http://vktest.kece.ru. Там же находится и инструкция по его установке и настройке.

Возможности модуля:

  1. Авторизация на сайте с помощью учетной записи ВКонтакте. Из ВКонтакта подтягивается вся доступная информация о пользователе и его аватарка.
  2. Возможность добавить ко всем материалам кноп ку "Сохранить ВКонтакте"
  3. Простое добавление виджетов ВКонтакте (комментарии, группы, опросы и т.п.) в любые блоки или материалы на сайте.

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

Логика работы модуля:

  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 вы должны указать параметры созданного ранее приложения ВКонтакте.

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

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

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

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

Disclaimer

Итак, с данного момента багрепорты типа "ничего не работает, помогите" игнорируются. Багрепорты связанные с некорректным отображением элементов в нестандартных темах оформления игнорируются, так как они легко локализуются Firebug'ом и исправляются правкой CSS. Рассматриваются только багрепорты с однозначным описанием проблемы: "включил модуль такой-то и перестала работать такая-то функция".

В случае с исчезновением кнопки share, проблема может быть из-за текста поста, по этому попробуйте создать тестовый пост, с 1 простым предложением и сохранить его, если кнопка в таком посте появилась, то продолжайте добавлять в него по 1-2 предложения из поста, в котором кнопка не появляется. В определенный момент она должна будет пропасть и в тестовом посте и тогда вы сможете разместить здесь строку, из-за которой кнопка share исчезает.

Комментарии

Аватар пользователя gorr gorr 17 мая 2010 в 13:22

В 91 строчке drupal_set_message('User create error', 'error'); можно заменить на drupal_set_message(t('User create error'), 'error'); для переводимости.
Спасибо.

Аватар пользователя Ромка Ромка 17 мая 2010 в 13:24

gorr wrote:
В 91 строчке drupal_set_message('User create error', 'error'); можно заменить на drupal_set_message(t('User create error', 'error')); для переводимости.
Спасибо.

Ок, спасибо, поправлю.

Вообще, хотелось бы получить фидбек от использования модуля, а также узнать у потенциальных пользователей модуля ответы на следующие вопросы. Нужно ли делать расширенную форму регистрации, как в модуле Facebook connect, в которой пользователя заставляют указать свой e-mail и предлагают не создавать новую учетную запись на Друпал-сайте, а связать фейсбучный аккаунт с существующим в Друпале аккаунте? Нужно ли вытягивать аватарку юзера из ВКонтакта и использовать ее в Друпал-сайте? Нужно ли следить за изменениями статусов юзера во ВКонтакте и как-то выводить их на Друпал-сайте? Нужно ли привязывать логаут из ВКонтакта к логауту из Друпал-сайта? Может какие-то еще есть пожелания?

Аватар пользователя Ромка Ромка 17 мая 2010 в 15:30

Это на моем тестовом сайте или на вашем? Вообще эта ошибка говорит о том, что в настройках неверно указаны "Адрес сайта" и "Базовый домен".

Аватар пользователя tolykot tolykot 17 мая 2010 в 16:25

В настройках модуля
Адрес сайта:
http://www.soft4u.org.ua
Базовый домен:
soft4u.org.ua

Правильно я понял? Smile

Модуль Boost выводит в журнал

<?phpThere are php errors on this page, preventing boost from caching. ERROR: 
Array

      [type] => 128
      [message] => Call-time pass-by-reference has been deprecated
      [file] => www/sites/all/modules/vk_openapi/vk_openapi.module
      [line] => 182?>

Аватар пользователя Ромка Ромка 17 мая 2010 в 16:59

tolykot wrote:
В настройках модуля
Адрес сайта:
http://www.soft4u.org.ua
Базовый домен:
soft4u.org.ua

Правильно я понял? Smile

Модуль Boost выводит в журнал


Да, все правильно. С бустом в паре модуль не тестировал, возможно из-за него глюк, попробую исправить его.

Аватар пользователя Ромка Ромка 18 мая 2010 в 17:48

tolykot wrote:
Модуль Boost выводит в журнал

Пока еще с бустом модуль потестить не успел, но попробуйте воспользоваться этим советом: http://drupal.org/node/583264#authcache. В настройках буста (admin/settings/performance/boost) нужно снять галочку "Asynchronous Opperation: output HTML, close connection, then store static file". Возможно поможет.

Аватар пользователя Geldora Geldora 17 мая 2010 в 16:59

Классный модуль! Спасибо большое!!!

"Ромка" wrote:
Нужно ли вытягивать аватарку юзера из ВКонтакта и использовать ее в Друпал-сайте?

Мне кажется, вот это - нужно... Все остальное - статусы, логауты - имхо, вещи привязанные к конкретным проектам, кому-то нужно, кто-то может обойтись (в идеале, конечно, вообще данные из ВКонтакте в данные юзера на Друпале переводить Smile но опять же - универсальный модуль не получится).

Вопрос: что будет, если пользователь не укажет эмейл, после регистрации? Особенно, если включена активация по эмейлу?

Аватар пользователя Ромка Ромка 17 мая 2010 в 17:09

Geldora wrote:
Вопрос: что будет, если пользователь не укажет эмейл, после регистрации? Особенно, если включена активация по эмейлу?

Этот момент сейчас никак не проверяется. Созданный модулем юзер автоматом активируется. E-mail только предлагается ввести, но это необязательное условие... по идее можно добавить такую опцию, чтобы, если пользователь не указал свой почтовый ящик, при клике по любой ссылке он редиректился на свой профиль с требованием указать e-mail...

Аватар пользователя Ромка Ромка 17 мая 2010 в 17:57

НовичОК wrote:
да, это нужно учесть, плиз.

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

Аватар пользователя Geldora Geldora 17 мая 2010 в 18:18

"Ромка" wrote:
если активация аккаунта возможна только администратором?

не думаю, что на таком сайте включат модуль вконтакте Smile

Хочу предложить такой вариант - на уровне вичерреквеста, конечно Smile Выбор в админке вебматером,

либо - дефолт (как сейчас все реализовано),

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

"Ромка" wrote:
если пользователь не указал свой почтовый ящик, при клике по любой ссылке он редиректился на свой профиль с требованием указать e-mail...

Еще раз спасибо большое за модуль Smile

Аватар пользователя Dеmimurych Dеmimurych 17 мая 2010 в 18:28

в догонку. посмотрел в код модуля.

не знаю насколько это критично НО

у вас
SELECT COUNT(*) AS count FROM {users} WHERE name = '%s'

в модуле user
SELECT COUNT(*) FROM {users} WHERE uid != %d AND LOWER(name) = LOWER('%s')

как видите модуль user не пропустит к регистрации ник demimurych если уже есть зарегистрированный Demimurych.

Аватар пользователя Ромка Ромка 17 мая 2010 в 22:44

Dеmimurych wrote:
как видите модуль user не пропустит к регистрации ник demimurych если уже есть зарегистрированный Demimurych.

Спасибо, учту в следующей версии.

Аватар пользователя andypost@drupal.org andypost@drupal.org 18 мая 2010 в 1:50

По идее e-mail должен быть факультативен по умолчанию, лишь для редких проектов он важен.
С e-mail, в 6ке по крайней мере, головняк отдельный - это поле обязательно, так что всяко придется настраивать.

Задача как и с openID - быстрая авторизация. Остальные навороты можно прикручивать по мере надобности.
Нужно смотреть API - на предмет переноса атрибутов пользователя и всего прочего.

Далее стоит подумать о UI в профайле и синхронизации.

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

Аватар пользователя Alangasar Alangasar 18 мая 2010 в 9:54

<a href="mailto:andypost@drupal.org">andypost@drupal.org</a> wrote:

Ромка, на твоем сайте у меня теперь 2 логина Sad по хорошему было бы удобно чтобы контактовская авторизация могла как-то добавляться к существующему пользователю, а то ткнул и завелся новый пользователь :(

Может добавить проверку не только по юзернейму, но и по мылу, если есть - авторизовывать.

Аватар пользователя Ромка Ромка 18 мая 2010 в 10:34

<a href="mailto:andypost@drupal.org">andypost@drupal.org</a> wrote:
Ромка, на твоем сайте у меня теперь 2 логина Sad по хорошему было бы удобно чтобы контактовская авторизация могла как-то добавляться к существующему пользователю, а то ткнул и завелся новый пользователь :(

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

Аватар пользователя Ромка Ромка 18 мая 2010 в 16:43

"Ламер" wrote:
Кстати, чтобы юзеры не боялись, можно ли как то реализовать сноску, при клике на кнопку "войти по вконтакту", о том, что данные от учётной данных вконтакта, данный сайт (ну где кнопка) не использует?

Ну это уже может сделать каждый владелец сайта по своему желанию. Как разместить эту кнопку в любом месте страницы я пример привел. Таким же образом можно и дополнительный текст рядом с ней разместить.
"Ламер" wrote:
Нужно вытягивать аватарку юзера из ВКонтакта и использовать ее в Друпал-сайте
Нужно следить за изменениями статусов юзера во ВКонтакте и как-то выводить их на Друпал-сайте
Нужно привязывать логаут из ВКонтакта к логауту из Друпал-сайта

Принял к сведению, в ближайшее время постараюсь докрутить такой функционал к модулю.

Аватар пользователя F10 F10 19 мая 2010 в 1:42

"<a href="mailto:andypost@drupal.org">andypost@drupal.org</a>" wrote:
Ромка, на твоем сайте у меня теперь 2 логина Sad по хорошему было бы удобно чтобы контактовская авторизация могла как-то добавляться к существующему пользователю, а то ткнул и завелся новый пользователь :(

- может сделать сноску: "Если у вас уже есть аккаунт на этом сайте, можете связать его с аккаунтом vkontakte, для этого зайдите на сайт под логином и паролем, и нажмите связать в настроках аккаунта", ну или типо того..:)

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

Модуль бомба для СНГ. Спасибо!!!

Аватар пользователя Ромка Ромка 19 мая 2010 в 10:35

"F10" wrote:
- может сделать сноску: "Если у вас уже есть аккаунт на этом сайте, можете связать его с аккаунтом vkontakte, для этого зайдите на сайт под логином и паролем, и нажмите связать в настроках аккаунта", ну или типо того..:)

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


Модуль уже доступен на друпал.орге, сегодня закачаю туда вторую альфу, в ней будут обе эти фичи.

Аватар пользователя abarmot abarmot 19 мая 2010 в 11:36

Ромка, низкий поклон тебе и уважение!!
На днях обязательно потестирую модуль.

З.Ы. А будет ли предусмотрена проверка существования вводимого мыла? Мне кажется это очень немаловажным, ибо при регистрации мыло проверяется, обычно, а тут можно хоть адрес Билла Гейтса вписать...

Аватар пользователя juliamat juliamat 19 мая 2010 в 15:56

DSLRs are often preferred by professional still photographers because they allow an accurate preview of framing close to the moment of exposure, and because DSLRs allow the user to choose from a variety of interchangeable lenses. Most DSLRs also have a function that allows accurate preview of depth of field.mcpd

Аватар пользователя vgoodvin vgoodvin 22 мая 2010 в 9:33

Круто! Спасибо!
Пробежался по API вот тут http://vkontakte.ru/page2369282. Я правильно понял что в дальнейшем можно будет добавить фичи, которые будут вытягивать всю инфу из вконтакта (друзья, группы и.т.д.), например для комьюнити на своем сайте? То есть реальна ли в будущем возможность интеграции с такими модулями как friendlist, user relationships?

Аватар пользователя Ромка Ромка 22 мая 2010 в 17:50

vgoodvin wrote:
Круто! Спасибо!
Пробежался по API вот тут http://vkontakte.ru/page2369282. Я правильно понял что в дальнейшем можно будет добавить фичи, которые будут вытягивать всю инфу из вконтакта (друзья, группы и.т.д.), например для комьюнити на своем сайте? То есть реальна ли в будущем возможность интеграции с такими модулями как friendlist, user relationships?

Да, OpenAPI предоставляет доступ ко всем этим данным (друзья, группы, фотки), но честно говоря, я не планировал использование их в модуле. Если будет необходимость и время, возможно, добавлю такой функционал к модулю, пока же я сосредоточен на авторизации через вконтакт, а не на получении от него доп данных.

Аватар пользователя Siegfrid@drupal.org Siegfrid@drupal.org 23 мая 2010 в 0:01

А не раскроете секрет для непосвященных, чем так хороша такого рода интеграция с прикладной точки зрения?

Аватар пользователя fairwind fairwind 23 мая 2010 в 9:56

Установил. При установке случилась ошибка:
Файл перевода ru.po содержит ошибку: невозможно обработать формулу множественных чисел.

Заглянул в файл - там такой формулы просто нет. Не знаю, насколько это критично Smile

Имхо, логичнее поместить настройки в меню управления пользователями.

Выравнивание кнопки входа по центру не везде уместно, лучше вынести стили в цсс-файл, а не хардкодить.

Еще у меня почему-то после нажатия на кнопку ничего не спрашивает, а сразу входит и создает юзера. Это так и должно быть? На демо-сайте открывалось окошко и ждало, пока я кнопку нажму.
Сайт - ivanovsa.ru

Аватар пользователя Ромка Ромка 23 мая 2010 в 10:44

fairwind wrote:
Выравнивание кнопки входа по центру не везде уместно, лучше вынести стили в цсс-файл, а не хардкодить.

CSS-файл есть, часть css-ов отдается самим вконтактом.

fairwind wrote:
Еще у меня почему-то после нажатия на кнопку ничего не спрашивает, а сразу входит и создает юзера. Это так и должно быть? На демо-сайте открывалось окошко и ждало, пока я кнопку нажму.
Сайт - ivanovsa.ru

Да, так и задумано. Если посетитель уже авторизован во вконтакте, то для него сразу создается пользователь (если его еще нет) и этот пользователь авторизуется в системе. Если посетитель во вконтакте еще не авторизован, то показывается окно, с предложением ввести логин/пароль вконтакта.

fairwind wrote:
Еще очень хочется кнопку в форму комментария...

Кнопку вставить можно куда угодно, посмотрите пример в первом посте. Или он у вас не сработал?

Аватар пользователя fairwind fairwind 23 мая 2010 в 21:34

Файл есть, но стиль кнопки записан в коде. Он же записан в примере кода в первом посте.
Пример видел, но хочется ж просто галочку в настройке поставить Smile "в комментах", "в форме регистрации", "в форме авторизации"...

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

Аватар пользователя vgoodvin vgoodvin 23 мая 2010 в 19:19

"Ромка" wrote:
Да, OpenAPI предоставляет доступ ко всем этим данным (друзья, группы, фотки), но честно говоря, я не планировал использование их в модуле. Если будет необходимость и время, возможно, добавлю такой функционал к модулю, пока же я сосредоточен на авторизации через вконтакт, а не на получении от него доп данных.

Главное что возможность есть.

Аватар пользователя sozdatel sozdatel 23 мая 2010 в 21:18

Модуль супер, а как он работает при использовании мультисайтинга? Нужо что-то добавлять в settings.php?

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 23 мая 2010 в 22:13

"fairwind" wrote:
Еще очень хочется кнопку в форму комментария...

В идеале, чтобы можно было бы самому прописывать ID формы, к которой эту кнопку втулить

Аватар пользователя RayB RayB 24 мая 2010 в 6:32

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

да, глюк подтверждаю.
заходим (даже под гостем) в профиль пользователя авторизованного через контакт и получаем сообщение "Если у вас уже есть учетная запись на этом сайте выможете объединить ее с текущей. Не показывать это сообщение снова."
причем при нажатии "объединить ее с текущей" получаем сообщение "Вы не можете объединять учетные записи"

Было бы здорово, если бы в профиле пользователя отображалось то, что аккаунт связан с профилем в контакте (как сделано OpenID). И соответственно, чтобы можно было пользователю, авторизовавшись через логин-пароль, зайти в свой аккаунт и уже там связать свой аккаунт с аккаунтов в контакте (опять же как сдалено OpenID) .

Аватар пользователя Ромка Ромка 24 мая 2010 в 9:52

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

да, глюк подтверждаю.

Ок, поправлю.

RayB wrote:
Было бы здорово, если бы в профиле пользователя отображалось то, что аккаунт связан с профилем в контакте (как сделано OpenID). И соответственно, чтобы можно было пользователю, авторизовавшись через логин-пароль, зайти в свой аккаунт и уже там связать свой аккаунт с аккаунтов в контакте (опять же как сдалено OpenID) .

Постараюсь реализовать эту фичу в одной из следующих версий модуля.

Аватар пользователя IL2 IL2 25 мая 2010 в 11:05

Наблюдается проблема при использовании модуля SMF.
Регистрация с модуля VK не влечет за собой создание учетной записи на форуме SMF через соответствующий модуль.
Впоследствии не удается изменить адрес почты в учетной записи из-за проблем синхронизации с SMF.

Аватар пользователя RayB RayB 25 мая 2010 в 12:14

баг:
1. пользователь авторизуется при помощи акка вконтакте.
2. администратор удаляет пользователя
3. пользователь пытается авторизоваться при помощи акка вконтакте и получает ошибку:

* user warning: Duplicate entry '' for key 'name' query: INSERT INTO users (picture, created) VALUES ('sites/default/files/pictures/a_5fabc287.jpg', 1274753644) in syte.ru/modules/user/user.module on line 327.
* warning: array_fill() [function.array-fill]: Number of elements must be positive in /syte.ru/includes/database.inc on line 253.
* warning: implode() [function.implode]: Invalid arguments passed in /syte.ru/includes/database.inc on line 253.
* warning: array_keys() [function.array-keys]: The first argument should be an array in /syte.ru/modules/user/user.module on line 502.
* user warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1 query: SELECT p.perm FROM role r INNER JOIN permission p ON p.rid = r.rid WHERE r.rid IN () in /syte.ru/modules/user/user.module on line 502.

p.s. Как можно сделать так, чтобы после авторизации не происходил редирект на главную, а пользователь оставался на той странице, где он нажал на кнопку авторизации вконтакте?

Аватар пользователя clubwave.ru clubwave.ru 26 мая 2010 в 4:01

"IL2" wrote:
Наблюдается проблема при использовании модуля SMF.
Регистрация с модуля VK не влечет за собой создание учетной записи на форуме SMF через соответствующий модуль.
Впоследствии не удается изменить адрес почты в учетной записи из-за проблем синхронизации с SMF.

страсти какие

Аватар пользователя RayB RayB 26 мая 2010 в 7:10

"Ламер" wrote:
а можно как бы сразу зделать такой модуль, который выпадающим меню предлагал зайти как пользователь одной из социалок, а лучше всего на свете... и там яндекса и жж и мэйлрушечки. чисто по выбору пользователя. эдакая мегабомба-модуль?

Лучшее - враг хорошего Smile
Запрячьте кнопку "войти в контакте" в выпадающий список среди других сервисов и вы потеряете львиную долю "вконтактников" )))

Потеряете не в том конечно смысле, что они пропадут, но кнопку точно не найдут, да и искать не будут. Так что только на самое видно место и лучше чтобы вокруг было пустое пространство ))

Аватар пользователя RayB RayB 27 мая 2010 в 8:48

"Valeratal" wrote:
пустой белый лист

и посередине "зайти через контакт"

кстати, если показывать такой белый лист для людей которые переходят с контакта, то думаю коверсия будет зашкаливать Smile

... и это неплохая идея... всплывающее белое окно достаточно большое с кнопкой "войти в контакте" для не авторизованных людей, которые переходят с ссылок в vkontakte.ru

Аватар пользователя 4upak 4upak 28 мая 2010 в 15:17

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

Аватар пользователя newbi_me newbi_me 5 июня 2010 в 10:56

Здравствуйте.
Простите за нубство.
У меня на сайте если разлогиниться и залогиниться снова создается еще один юзер.
Так и должно быть?)

типа user
user_1
...

Аватар пользователя Sinkora Sinkora 5 июня 2010 в 22:11

"Ламер" wrote:
с тем что куча хомячков которым лень регистрироваться чтобы отставить комент на сайте, могут зарегицца в 2 клика.

А зачем мне хомячки на сайте? Smile

Да и на Друпале можно сделать регистрацию в 2 клика.

Причина, наверное, в другом?..

Аватар пользователя F10 F10 6 июня 2010 в 12:25

"Sinkora" wrote:
А зачем мне хомячки на сайте? :)

- а затем, что эти хомячки могут и остаться. И возможно причиной выбора сайта - будет возможность входить с "Вконтакте".

Аватар пользователя Sinkora Sinkora 6 июня 2010 в 16:11

"gumk" wrote:
- а затем, что эти хомячки могут и остаться. И возможно причиной выбора сайта - будет возможность входить с "Вконтакте".

Все зависит от Вашего сайта. Например, если у вас качественная социальная сеть определенной тематики, то аудиторию Вы свою обязательно наберете в любом случае. Т.е. на сайте, в идеале, люди должны регистрироваться только потому, что сайт им понравился, или его кто-то порекомендовал, а не потому что есть возможность авторизации из внешнего ресурса.

Аватар пользователя F10 F10 6 июня 2010 в 17:28

Регистрация в том виде, в котором была - уходит в прошлое.
По крайней мере из моих знакомых, кто не занимается web-разработками, вечно жалуются на регистрацию, мол повтыкают куда не попадя.
И если проследить - как они серфят в инете, на те сайты, где нужна регистрация не идут.
А этот модуль - хоть какое-то решение (и гостям приятно, и web-мастеру хоть какой-то контроль над ресурсом).

P.S. То же самое с торрент ресурсами, где есть рейтинги - туда новые уже не приходят, так как дофига где качать можно, тупо нажав кнопку, и не париться по поводу своего рейтинга.

Аватар пользователя seaji seaji 12 июня 2010 в 20:32

Использование конструкции:
<div id="vk_login" style="margin: 0 auto 20px auto;" onclick="doLogin();"></div>
Ограничивает количество кнопок для входа до одной.
Это плохо, т.к. на странице user у меня планируется два появления этой кнопки. Как в блоке, так и на самой странице.

Аватар пользователя seaji seaji 12 июня 2010 в 21:04

IE8 выдает синтаксическую ошибку JS
где то в районе:

window.vkAsyncInit = function() {
    VK.init({
      apiId: 1889693,
      nameTransportPath: "/vk/xd_receiver.html",
      status: true,
    });

    VK.UI.button('vk_login');

Аватар пользователя seaji seaji 10 ноября 2015 в 11:46

Хочу сделать такую вещь:

Скрестив Ваш модуль, fbconnect и свой openlogin
Ммм... уже слюнки текут Smile

Аватар пользователя Ромка Ромка 13 июня 2010 в 16:58

seaji wrote:
Хочу сделать такую вещь:

Скрестив Ваш модуль, fbconnect и свой openlogin
Ммм... уже слюнки текут :)

Я тоже примерно такую штуку сейчас делаю. Правда не уверен что выложу этот модуль в открытый доступ.

Аватар пользователя Ромка Ромка 13 июня 2010 в 16:56

Сделал новую версию модуля.

Что нового

Исправлены следующие баги:

  • некорректная ссылка "Вы должны указать ваш e-mail. Нажмите здесь, чтобы сделать это".
  • глюк js в IE8 (правил глюк вслепую, так как под рукой нет ИЕ8, так что, возможно, баг и не исправлен).
  • ошибка при авторизации юзера, если созданный ранее модулем аккаунт был удален администратором. Вообще, возможно имеет смысл для таких случаев запретить повторную регистрацию?
  • ссылка "Объединить аккаунты" раньше выводилась для всех пользователей, теперь только для тех, кто может выполнить объединение.
  • Warning: Call-time pass-by-reference has been deprecated in <...>/sites/all/modules/vk_openapi/vk_openapi.module on line 308.

Добавлена возможность выводить на странице несколько кнопок для логина через ВКонтакт. Внимание! Теперь для отображения кнопки в нужном месте страницы надо вставить такой код:

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

(отличие от старого варианта — добавлен атрибут class). Внимание! У каждой вставляемой таким образом кнопки должен быть уникальный атрибут id! Сразу предупреждаю, кнопка может разъехаться, произойдет это или нет зависит от используемых на странице CSS. Так что в случае проблем с внешним видом кнопки не надо писать о них сюда, достаточно вооружиться Файрбагом и за 5 минут самостоятельно поправить внешний вид кнопки.

Служебный путь vk/xd_receiver.html заменен на vk/xd_receiver. Внимание! Это изменение может потребовать очистки кеша.

Что не сделано

К сожалению не сумел отловить баг, при котором для одного и того же вконтактовского аккаунта создается несколько учеток на Друпал-сайте. У меня модуль работает на 3 сайтах и этот глюк на них не наблюдается.

Также не сумел прикрутить получение статуса пользователя из ВКонтакта.

Аватар пользователя RayB RayB 13 июня 2010 в 17:13

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

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

"Ромка" wrote:
Я тоже примерно такую штуку сейчас делаю. Правда не уверен что выложу этот модуль в открытый доступ.

жаль Smile

Аватар пользователя Ромка Ромка 13 июня 2010 в 17:40

RayB wrote:

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

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

Аватар пользователя F10 F10 14 июня 2010 в 0:46

"Ромка" wrote:
Правда не уверен что выложу этот модуль в открытый доступ.

- если сделаешь, дай знать, договоримся.

Аватар пользователя seaji seaji 14 июня 2010 в 18:51

"Ромка" wrote:

Я тоже примерно такую штуку сейчас делаю. Правда не уверен что выложу этот модуль в открытый доступ.

Я понимаю, это слишком индивидуальное решение.
Да и не модуль это вовсе.
Такую кнопку:

Я реализовал скрещением 5-ти технологий.
- css dropdown
- системный openid
- мой openlogin
- Ромкин vk_openapi
- и fbconnect

Большой сложности, что бы их замиксить нету.
Вот код:

  $output '';
  global 
$user;
  if(
$user->uid == && arg(0) != 'user') {
    
$output .= '
  • '.l('Вход''user');
        
    $output .= '';
        if(
    module_exists('vk_openapi')) {
          
    $output .= '
  • ';
          
    $output .= '';
          
    $output .= '  Вконтакте';
          
    $output .= '
  • ';
        }
        if(
    module_exists('fbconnect')) {
          
    $output .= '
  • ';
          
    $output .= '';
          
    $output .= '';
          
    $output .= '  Facebook';
          
    $output .= '
  • ';
        }
        if(
    module_exists('openlogin')) {
          foreach(
    $GLOBALS['login']['settings']['providers'] as $key => $provider) {
            
    $output .= '
  • .$key.'">';
            
    $output .= '.$provider['icon'].'" width="16" height="16" rel="'.$key.'">   '.$provider['name'].'
  • ';
          }
        }
        
    $output .= '';
        
    $output .= '';
        
    $output .= '';
        
    $output .= drupal_get_form('user_login');
        
    $output .= '
    ';
      }
      elseif(
    $user->uid) {
        
    $output .= '
  • '.l($user->name'user/'.$user->uid).'
  • '
    ;
        
    $output .= '
  • '.l('Выход''logout').'
  • '
    ;
      }
      
    $output .= '';
      print 
    $output;
    ?>

    Полученное меню должно цепляться css dropdown