Вы здесь

HybridAuth. Проблема с аватаркой и e-mail при регистрации через Одноклассников

1

Hello World!

Вопрос скорее не к модулю, а к провайдеру соц. сети ОК, но мало ли кто-то сталкивался :)

Итак, есть сайт с замечательным супер-модулем для авторизации через социальные сети — HybridAuth Social Login. Сама библиотека обновлена до актуальной версии (специально перепроверил на GitHub). Включена, настроена и работает авторизация через VK, FB и OK.

Но. Если новый пользователь авторизуется через Одноклассников:

  1. В качестве аватарки выбирается для загрузки вот это изображение [user:hybridauth:photoURL], которое имеет очень мелкий размер — 50х50. Хотя в настройках этого пользователя (user/[node:nid]/hybridauth) есть аналогичный токен — [user:hybridauth:photoBIG] — который содержит ссылку на нормальный (для большинства случаев) размер аватарки — 128х128.

  2. Почему-то не «подсасывается» e-mail. В документации, вроде, указано, что можно получать адрес электронной почты при подобной авторизации. На деле — всегда потом нужно самому вбивать.

Короче говоря, Mail.Ru такое Mail.Ru, ибо Вконтакте и Facebook не грешат подобным и всё цепляют на ура.

Версия Drupal: 
7.x
Категория: 
User API
Связанные проекты: 
HybridAuth Social Login
Вопрос задан 16.10.2015 - 19:19

Как временный вариант, можно в функции getUserProfile() (файл ./sites/all/libraries/hybridauth/Hybrid/Providers/Odnoklassniki.php) поменять местами photoURL и photoBIG (164 и 165 строчка):

...
$this->user->profile->photoBIG = (property_exists($response,'pic_1'))?$response->pic_1:"";
$this->user->profile->photoURL = (property_exists($response,'pic_2'))?$response->pic_2:"";
...

Но хотелось бы более элегантное решение аля «решение, которое не слетает при обновлении». Также, пока не понятно: зачем вообще два размера аватарки тянуть? Может быть это исправление где-нибудь что-нибудь сломает?!

Про e-mail — вообще песня, например вот: https://toster.ru/q/223988

Комментарий оставлен 17.10.2015 - 20:47

Ответы

2

По картинке - есть же hook_hybridauth_profile_alter(&$profile), в котором и можно подменить photoURL если не нравится значение, полученное от реализации провайдера в библиотеке.

Ответ дан 17.10.2015 - 23:55

Да, спасибо, нашёл.

А вот какое-нибудь такое же решение с e-mail — было бы вообще супер. Просто есть в API метод users.getCurrentUser, в котором ещё год назад внесли правку, а именно:

Возможные поля описаны в статье fields

Да, там множество полей, которые никому не нужны, но есть и желанное email, но с предупреждением:

GET_EMAIL permission is required

Сколько бы я не искал в гугле, так и не удалось найти верного ответа «откуда брать и куда вставлять этот GET_EMAIL». Суппорт у ОК, видимо, только для галочки — уже полмесяца не могу ответ на этот вопрос получить (даже реквест, типа «ваш запрос очень важен для нас, скоро ответим»). Но, как я понял, я не одинок в этом, судя по Тостеру и статьям на Хабре :)

Комментарий оставлен 18.10.2015 - 09:54

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

Комментарий оставлен 19.10.2015 - 11:08

Была бы нормальная документация - мог бы сказать конкретней

Была бы нормальная документация — я бы и вопрос этот не задавал... да и «тыкаться» не пришлось бы ;)

Я так понимаю, нужно scope задавать вот тут, а поля, которые хочешь получить, где-то вот тут?

Комментарий оставлен 28.10.2015 - 08:57

Вот, кстати, на Тостере ответил мне кто-то из ОК на счёт полей и e-mail: https://toster.ru/q/260955?e=2971859
Призываю совместными усилиями допилить до идеала Providers/Odnoklassniki.php для будущих поколений :) ибо, если честно, то я вообще ничего не понимаю (чего-куда пихать), когда этот файл начинаю ковырять...

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

Итак. Спустя столько времени, наконец-то добился ответа от суппорта! :)

По e-mail: смело теребонькаем этот вопрос по этому адресу api-support@odnoklassniki.ru. Там, спустя некоторое время, ответят что-то типа «Мы даём этот пермишен только персонально, опишите зачем он вам и что за проект».

По аватарке: сделал пул реквест, жду пока смерджат в мастер — https://github.com/hybridauth/hybridauth/pull/574

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

Мда. Думал адекватнее люди, которые следят и принимают пуллреквесты в репозиторий HybridAuth на гитхабе. Взяли и смерджели вообще не важный PR для провайдера ОК. Причём который был много позже моего и который полностью ломает мой рефакторинг. То ли потому что у меня в профиле Россия числится, а модератор из Киева.. хрен его знает.

Короче, не будет там обещанного ранее автомерджа. Так что берите с моего форка версию провайдера для Одноклассников, которая решает проблему с аватаркой без всяких хуков: https://github.com/enjoyiacm/hybridauth/blob/master/additional-providers...

Комментарий оставлен 10.11.2015 - 15:04