VK OpenAPI для Drupal 7

Аватар пользователя orangeudav orangeudav 27 февраля 2012 в 15:11

Енто быстрый и грязный порт vk_openapi под семерку.

https://github.com/orangeudav/vk_openapi7

0 Thanks

Комментарии

Аватар пользователя orangeudav orangeudav 27 февраля 2012 в 16:26

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

Аватар пользователя Fasdalf Fasdalf 4 марта 2012 в 22:54

PHP Fatal error: Call to undefined function drupal_set_html_head() in /.../modules/vk_openapi/vk_share/vk_share.module on line 81

Похоже, кнопка "мне нравится" не спортирована?

Аватар пользователя mak-vardugin mak-vardugin 3 апреля 2012 в 5:35

Глюк при установке vk_share благодаря коменту господина Волокуги подправил.

в Меню появился пункт VKontakte share-button settings, но формочка по этой кнопке не вызывается, по этому адресу пустой экран.

Глянул код vk_share.admin.inc
Чуть подправил и там, но все равно не фурычит, где я ошибся?

<?php
function vk_share_admin_settings() {
global $base_url;

$form['global'] = array(
    '#type' => 'fieldset',
    '#title' => t('vk_share adminsettings'),
    '#collapsible' => TRUE,
    '#collapsed' => FALSE,
  );
 
  $form['global']['vk_share_node_types'] = array(
    '#type' => 'checkboxes',
    '#title' => t('Node types to share in vkontakte.ru'),
    '#options' => node_get_types('names'),
    '#description' => t('Check node types witch you want to share.'),
    '#default_value' => variable_get('vk_share_node_types', array('page' => 'page')),
  );

  $form['global']['vk_share_display_page'] = array(
    '#type' => 'checkbox',
    '#title' => t('Display VK share button on full node pages'),
    '#default_value' => variable_get('vk_share_display_page', 1),
  );

  $form['global']['vk_share_display_teaser'] = array(
    '#type' => 'checkbox',
    '#title' => t('Display VK share button on node teasers'),
    '#default_value' => variable_get('vk_share_display_teaser', 1),
  );

  $form['global']['vk_share_button_style'] = array(
    '#type' => 'select',
    '#title' => t('Style of share button'),
    '#default_value' => variable_get('vk_share_button_style','button_count'),
    '#options' => array(
      'button_count' => t('VK button with counts'),
      'button' => t('Vk button without counts'),
      'link' => t('VK link'),
    ),
    '#description' => t('Button styles <a href="!url">description</a>.', array('!url' => 'http://vkontakte.ru/developers.php?o=-1&p=Share')),
  );

  return system_settings_form($form);

}

Аватар пользователя aa2007 aa2007 12 июля 2012 в 15:04

При вводе email после входа выдает ошибку:

Fatal error: Call to undefined function drupal_mail_send() in /sites/all/modules/vk_openapi7/vk_openapi.module on line 633

Аватар пользователя aa2007 aa2007 12 июля 2012 в 15:19

Было бы так же не лишнем выводить кнопку на вкладке "Войти" на странице авторизации. (сорри не заметил сразу. она там есть :) )

Но тем не менее почему то авторизация через вконтакте не происходит :(

При переходне на вкладку "Вконтакте" появляется ошибка:

Warning: unserialize() expects parameter 1 to be string, array given в функции vk_user_data() (строка 690 в файле /sites/all/modules/vk_openapi7/vk_openapi.module).

Если зарегистрированный на сайте пользователь на вкладке "Вконтакте" нажимает на "Войти Вконтакте", выскакивает попап с сообщением: "Error connecting to server."

И в журнале куча ошибок:

PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '97261' for key 'PRIMARY': INSERT INTO {vkontakte_users} (`uid`, `vkuid`, `ts`) VALUES (:uid, :vkuid, :ts); Array ( [:uid] => 1 [:vkuid] => 97261 [:ts] => 1342091445 ) в функции _vk_unite_drupal_and_vk_accounts() (строка 366 в файле /sites/all/modules/vk_openapi7/vk_openapi.module).

Notice: Undefined variable: avatar в функции _vk_unite_drupal_and_vk_accounts() (строка 361 в файле /sites/all/modules/vk_openapi7/vk_openapi.module).

Warning: unserialize() expects parameter 1 to be string, array given в функции vk_user_data() (строка 690 в файле /sites/all/modules/vk_openapi7/vk_openapi.module).

Notice: Undefined property: stdClass::$created в функции _vk_openapi_mail_notify() (строка 625 в файле /sites/all/modules/vk_openapi7/vk_openapi.module).

Notice: Undefined property: stdClass::$name в функции _vk_openapi_mail_notify() (строка 625 в файле /sites/all/modules/vk_openapi7/vk_openapi.module).

Warning: array_flip() [function.array-flip]: Can only flip STRING and INTEGER values! в функции DrupalDefaultEntityController->load() (строка 178 в файле /includes/entity.inc).

Notice: Undefined variable: _SESSION в функции vk_enter_email_submit() (строка 600 в файле /sites/all/modules/vk_openapi7/vk_openapi.module).

Notice: Trying to get property of non-object в функции vk_openapi_login() (строка 243 в файле /sites/all/modules/vk_openapi7/vk_openapi.module).

Notice: Trying to get property of non-object в функции vk_openapi_login() (строка 287 в файле /sites/all/modules/vk_openapi7/vk_openapi.module).

Аватар пользователя Ромка Ромка 19 июля 2012 в 11:35

Портировал модуль под Drupal 7. В отличии от версии, приведенной топик-стартером, работает загрузка картинок из ВК и объединение аккаунтов. Кроме того переделан способ хранения данных о пользователях на более соответствующий Drupal way.

Vk_share и vk_share_panels пока не портировал, но это дело одного-двух дней.

Приглашаю всех потестировать новую версию модуля: http://drupal.org/project/vk_openapi.

Аватар пользователя aa2007 aa2007 19 июля 2012 в 18:26

После включения модуля (предыдущий естественно отключил, удалил через админку, удалил с сервера) появилист нотисы:

Notice: Undefined index: vk_data в функции vk_openapi_init() (строка 112 в файле /sites/all/modules/vk_openapi/vk_openapi.module).

Notice: Undefined index: vk_data в функции vk_openapi_page_build() (строка 147 в файле /sites/all/modules/vk_openapi/vk_openapi.module).

На страничке с юзером добавилось еще:

Notice: Undefined property: stdClass::$vk_show_unite_message в функции vk_openapi_user_view() (строка 444 в файле /sites/all/modules/vk_openapi/vk_openapi.module).

Аватар пользователя DDDDD099 DDDDD099 23 июля 2012 в 12:50

После авторизации на страничке с юзером - Notice: Undefined property: stdClass::$vk_show_unite_message in vk_openapi_user_view() (line 444 of /sites/all/modules/vk_openapi/vk_openapi.module).

В Лисе авторизация не проходит - появляется окно авторизации и сразу пропадает.

Если включен модуль modal_forms то кнопка вконтакте во всплывающей форме входа появляется, но пропадает кнопка войти.

Аватар пользователя Ромка Ромка 28 июля 2012 в 21:16

Выложил новый дев-релиз. Ошибки с нотисами типа "Notice: Undefined index: vk_data" исправил, массив vk_data, следуя бест практис, переименовал в vk_openapi.

На счет интеграции с modal_forms причины проблемы понял, но как ее решить пока не знаю.

"DDDDD099" wrote:

В Лисе авторизация не проходит - появляется окно авторизации и сразу пропадает.

Нужно больше информации, логи ошибок если есть. У меня во всех браузерах авторизация проходит без ошибок.

Аватар пользователя Irbis Irbis 30 июля 2012 в 11:20

http://www.aquanther.ru/vk_openapi.zip - сделал свою версию, весь функционал работает, в том числе: vk_share и vk_share_panels. Основное отличие от исходной версии - упор на работу с аватаром пользователя и его обновление, это для меня очень важно. Дал всему добру версию 2 и описалово основных моментов работы модуля в readme.txt.

Возможности модуля:
1. Подключение стилей CSS и JS модуля только для определённого типа пользователей или принудительно на всех страницах.
2. Добавление кнопки авторизации через vkontakte на форму авторизации сайта (как на странице, так и в блок).
3. Вывод сообщения (п. 10) об объединении аккаунта Drupal сайта с текущим аккаунтом vkontakte на странице пользователя (/user).
4. При удалении пользователя удаляется как его аватар (файл на HDD и запись о файле в БД), так и данные его связи с аккаунтом vkontakte в БД.
5. При регистрации пользователя с аккаунтом vkontakte пользователю можно задавать роль по умолчанию.
6. При регистрации пользователя с аккаунтом vkontakte можно выбирать размер аватара копируемого из аккаунта vkontakte.
7. При регистрации пользователя с аккаунтом vkontakte можно выбирать из каких частей логина аккаунта vkontakte будет состоять имя пользователя (с проверкой на уникальность).
8. При регистрации пользователя с аккаунтом vkontakte задаётся страница перенаправления.
9. Возможно включение принудительного ввода e-mail после регистрации пользователя из vkontakte на сайте, с ограничением срока подтверждения e-mail.
10. Возможно объединение существующего Drupal аккаунта и текущего аккаунта vkontakte. При этом единоразово меняется автор всех созданных материалов и комментариев из под аккаунта vkontakte на имя аккаунта Drupal. При этом данные аккаунта vkontakte будут использоваться для авторизации, а так же будет обновляться аватар.
11. Возможно привязка текущего Drupal аккаунта к аккаунту vkontakte. При этом данные аккаунта vkontakte копируются в текущий аккаунт.
12. Данные профиля пользователя обновляются (аватар и имя по шаблону) по прошествии заданного периода времени если пользователь посетит сайт.
13. С помощью дочернего модуля vkontakte OpenAPI share-button, ссылки на статьи (из статей с помощью кнопки) можно размещать пользователю сайта на своей странице vk.com.
14. С помощью дочернего модуля vkontakte OpenAPI share-button plugin for Panels, можно в панелях перекрывающих страницы размещать кнопку поделиться из модуля vkontakte OpenAPI share-button. Т.е. с помощью Page Manager перекрываете вывод определенного типа нод на Panel и в неё вставляете кнопку.

Внимание:
1. Пароль пользователя генерируется Drupal-сайтом, а почта создаётся из его vkontakte Id и '@vk.com'.
2. Часовая зона задаваемая пользователю по умолчанию: Europe/Moscow (редко используемый функционал).
3. Проверка уникальности имён файлов аватаров производится во vkontakte, при этом минимизировано пересечением с именами файлов аватаров Drupal аккаунтов.
4. Данные приходящие от vkontakte хранятся в RAW.
5. После изменения правила формирования имени для аккаунта vkontakte, обновление имени аккаунта производится при следующем посещении сайта пользователем.
6. К сожалению при включении принудительного ввода e-mail после регистрации отправляется письмо в текстовом виде которое жёстко забито в коде (редко используемый функционал).
7. К сожалению при включении принудительного ввода e-mail при проверке каких пользователей заблокировать, производится проверка всех пользователей зарегистрированных с аккаунтом vkontakte (редко используемый функционал).
8. При объединении профилей, имя аккаунта Drupal сайта становится основным именем аккаунта и не изменяется. Это позволяет использовать авторизацию как и Drupal (иногда требуется пройти процедуру восстановления пароля), так и vkontakte для одного аккаунта. Во первых не всегда пользователь хочет представляться именем аккаунта vkontakte, во вторых пользователь не потеряет доступ к сайту в случае если он в поездке или потерял доступ к vkontakte и не может автоматизироваться через него.
9. В коде используется обозначение vk, в комментариях: vkontakte. Домен: vk.com.

Примечания:
1. По поводу пункта 6 и 7: суть модуля (и бизнес модель его применения) - облегчить пользователям авторизацию на сайте. А форму для сбора E-mail нужно вещать на промо-плющки и организовывать для промо-плюшек хорошую E-mail цепочку вовлечения пользователя сайта в покупку услуг на сайте.

Спасибо за фидбек с пометкой к версии 2 :).

Аватар пользователя Ромка Ромка 30 июля 2012 в 11:27

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

Аватар пользователя Irbis Irbis 30 июля 2012 в 11:50

1. Несовместим с 7.1 :). Данные хранятся в таблице как и в версии 6.x, что бы их можно было удобно использовать извне.
2. Аватарка обновляется чаще - как указывается из админки. И вся переработка связана с аватаркой: копирование, удаление, обновление при разных событиях от 3 типов слияния профилей (Drupal+VK->Drupal, Drupal->VK, Drupal->Drupal+VK) до просто обновления у пользователей зарегистрированных чисто из VK.
3. Перевода добавил немного и вроде всё портировал (проверил у меня весь функционал работает) взяв часть кода из твоего модуля.
4. На русском комментов наоставлял для желающих влиться.

В принципе по функционалу - тока с аватарками сильно заморочился, но для этого много переписал. Получается чуть медленнее чем у тебя, так как чаще аватарки обновляются (честная проверка при каждом открытии пользователем страницы, что полезно в приложениях для VK где важна актуальность аватарок).

Аватар пользователя aa2007 aa2007 30 июля 2012 в 18:16

А планируется ли какая-нибудь интеграция с rules? В частности интересует возможность постить контент на стену юзера/группы.

Аватар пользователя Irbis Irbis 31 июля 2012 в 3:41
"aa2007" wrote:

А планируется ли какая-нибудь интеграция с rules? В частности интересует возможность постить контент на стену юзера/группы

Этого к сожалению не получится, так как работает всё через JS и браузер. Пользуйтесь сторонними сервисами.

Аватар пользователя htmlkin htmlkin 10 ноября 2015 в 11:48
"Ромка" wrote:

Приглашаю всех потестировать новую версию модуля: http://drupal.org/project/vk_openapi.[/quote]

Не знаю по какой такой причине, но модуль работать отказывается. Поставил чистую 7.15, настроил приложение в ВК, модуль. Пишет "Имя пользователя, you successfully logged in via vKontakte account." однако как таковой авторизации не происходит. Посмотрел в списке юзеров - пользователь есть.

P.S. Версия под 6-й друпал на 6-ке работает как часы, так что можно сразу исключить настройку модуля, приложения, ПО сервера. В аттаче приложил пару скринов, для наглядности.

Аватар пользователя Ромка Ромка 10 августа 2012 в 8:49
htmlkin wrote:

Не знаю по какой такой причине, но модуль работать отказывается. Поставил чистую 7.15, настроил приложение в ВК, модуль. Пишет "Имя пользователя, you successfully logged in via vKontakte account." однако как таковой авторизации не происходит. Посмотрел в списке юзеров - пользователь есть.

P.S. Версия под 6-й друпал на 6-ке работает как часы, так что можно сразу исключить настройку модуля, приложения, ПО сервера. В аттаче приложил пару скринов, для наглядности.

Скрины малоинформативны, в них даже непонятно к какому модулю относятся ошибки. Добавьте в .htaccess строчку:

php_value error_reporting E_ALL

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

Аватар пользователя Ромка Ромка 9 августа 2012 в 23:24

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

Аватар пользователя orangeudav orangeudav 10 августа 2012 в 1:24
Ромка wrote:

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

Могу репозиторий на гитхабе отдать, зачем плодить сущности!
Уж всяко лучше унылого CVS-хостинга проектов на drupal.org

Аватар пользователя Ромка Ромка 10 августа 2012 в 8:29
orangeudav wrote:

Уж всяко лучше унылого CVS-хостинга проектов на drupal.org

Вообще, на друпалорге давно Git используется.

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

Вот такая засада выскакивает при разрешении пользователю шарить статьи со стороннего сайта на свою страницу на vk.com
Notice: Undefined property: stdClass::$body в функции _render_vk_share_button() (строка 66 в файле /home/f/farbchelru/public_html/sites/all/modules/vk_openapi/vk_share/vk_share.module).

drupal 7.17
vk_openapi 7.x-1.0