Вы здесь

HybridAuth Social Login. Непонятные ошибки в модуле после авторизации нового пользователя

0

Приветствую!

Столкнулся с непонятной (и не описанной в гугле, что интересно) ошибкой в модуле авторизации через социальные сети - HybridAuth Social Login. Порядок действий такой:

  1. Новый пользователь нажимает на иконку одной из соц. сети (VK, FB, OK);
  2. Переходит на страницу авторизации выбранной соц. сети и вводит свои логин/пароль;
  3. После успешной авторизации его редиректит обратно на мой сайт;

Вот после этого $messages в page.tpl.php кричит следующее:

Notice: Undefined property: stdClass::$created в функции user_tokens()
(строка 121 в файле /path/to/mysite.ru/public_html/modules/user/user.tokens.inc).

Проверяю строку #121 в этом файле и не понимаю - вроде всё на месте, ничего необычного:

if ($registered_tokens = token_find_with_prefix($tokens, 'created')) {
    $replacements += token_generate('date', $registered_tokens, array('date' => $account->created), $options);
}

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

Да, конечно, можно отключить выдачу ошибок и забыть про это, но это как минимум странно для модуля, который используется на более 3.1к проектах и хотелось бы разобраться! Если у кого-то есть мысли на эту тему - буду рад любой помощи. :)

Версия Drupal: 
7.x
Связанные проекты: 
HybridAuth Social Login
Вопрос задан 01.08.2015 - 18:02

Ответы

4

Добрый день :)

Спасибо за использование модуля HybridAuth и за вопрос.

Скорее всего вы проигнорировали фразу "You should use only HybridAuth tokens here as the user is not created yet." когда устанавливали шаблон для имени создаваемого пользователя "Username pattern" в настройках модуля HybridAuth -> Account settings - в этом поле можно использовать только токены типа [user:hybridauth:*]

Спасибо, хорошего дня.

Ответ дан 02.08.2015 - 15:51

Доброго дня. Огромное спасибо, помогли! Как приятно, что разработчик самого удобного модуля для соц. аутентификации — русскоязычный :D

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

/*
    Get global user
*/
global $user;
/*
    Get user account
*/
$account = menu_get_object('user');
/*
    Get user profile fields
*/
...
/*
    HybridAuth fields
*/
$fullName = $account->data['hybridauth']['firstName'] . ' ' . $account->data['hybridauth']['lastName'];
...

Можно ли вывести эти самые поля ['hybridauth']['firstName'] и ['hybridauth']['lastName'] в шаблон редактирования пользователя? Для чего - отвечу. Главное отображаемое имя по всему сайту - как раз то, которое «грабит» HybridAuth из социальной сети пользователя, но на сайте будет возможность авторизации/регистрации и через стандартный друпаловский способ, а полей там таких нет.

Пробовал вот так, например, в user-profile-edit.tpl.php (определил шаблон формы через hook_theme() в template.php):

...
print render($form['#user']['hybridauth']['firstName']);
...

Но, естественно, выводится только сам результат, а не форма.

Комментарий оставлен 03.08.2015 - 16:03

Вам нужно сделать отдельные поля под данные, которые вы хотите сделать редактируемыми - заполнять их с помощью модуля Rules при создании аккаунта через HybridAuth (модуль интегрирован с Rules), пользователь же просто сможет их отредактировать заходя в редактирование профиля.
Также рекомендуется к использованию модуль Real name, чтобы настроить отображение имени пользователя, используя данные из полей или из токенов.

Если же так не делать, а позволить пользователю редактировать именно то место, где сам HybridAuth хранит данные - то нужно будет пописать код... объяснять какой именно и где - это довольно долго и муторно.

Комментарий оставлен 03.08.2015 - 21:42

Всё, понял. Без Рулей никуда :) Что ж, буду разбираться с этим.
Спасибо огромное, успехов!

Комментарий оставлен 04.08.2015 - 13:50
4

Напишите Андрею Березовскому вопрос например в issue - он отзывчивый.

Ответ дан 01.08.2015 - 21:27