[РЕШЕНО] HybridAuth и Одноклассники

Привет, Василий и коллеги!

Возникла проблема с авторизацией юзера через Одноклассники.ру. После откровенно геморройной процедуры получения ключа приложения и секретного кода, создал соответствующие параметры в настройках системы.



Предварительно проверив правильность названия провайдера в core/components/hybridauth/model/hybridauth/lib/Providers/ добавил в чанк tpl.HybridAuth.login строку:
<a href="[[+login_url]]&provider=Odnoklassniki">Odnoklassniki.ru</a>

на странице с авторизацией добавил вызов HybridAuth:
[[!HybridAuth? &providers=`Vkontakte,Mailru,Odnoklassniki` &groups=`Site visitors` &requiredFields=`username,fullname,email,photo` &profileFields=`username,fullname,email,photo`]]

Проблема в следующем. Авторизация через Mail.ru и Vk проходит успешно (в соответствующей группе создаются пользователи, успешно логинятся и разлогиниваются), а с Одноклассниками — труба. Происходит вот что — незалогиненный юзер переходит на страницу авторизации Одноклассников, вводит логин и пароль и, по логике вещей, после редиректа уже должен быть авторизован на сайте. Но авторизации не происходит, да и соответствующий пользователь не создается.

Вот содержимое error.log:

[2013-02-13 14:38:40] (ERROR @ /connectors/security/user.php) Could not get table class for class: modAccess
[2013-02-13 14:38:40] (ERROR @ /connectors/security/user.php) Could not get table name for class: modAccess
[2013-02-13 14:38:40] (ERROR @ /connectors/security/user.php) Error 42000 executing statement: 
Array
(
    [0] => 42000
    [1] => 1064
    [2] => 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 'AS `modAccess` WHERE `modAccess`.`principal` = 6' at line 1
)

Думаю вот, что с этим делать и где копать. Может у кого-нибудь уже был положительный опыт подключения Одноклассников? Буду благодарен за совет и пинок в нужном направлении.
Andrei Kulazhenko
13 февраля 2013, 12:10
modx.pro
5 860
0

Комментарии: 19

Алексей Добряков
13 февраля 2013, 16:35
0
{«id»:«123456»,«key»:«123456»,«secret»:«123456»} должно быть так, у меня подключены одноклассники, но я их хочу уже отключить так как если будешь использовать аватарки, то сайт их не получит, точнее он получит картинку где будет написано что это картинка находится на однаклассниках
    Yani
    18 октября 2013, 14:36
    0
    я тут придумала свой костыль решения одноклассникам))

    в файлик \core\components\hybridauth\model\hybridauth\lib\Providers\Odnoklassniki.php
    в функцииfunction getUserProfile()
    после
    if ( ! isset( $response->uid ) ){
    throw new Exception( "User profile request failed! {$this->providerId} returned an invalid response.", 6 );
    }
    вставляем
    $copy=false;
        if (property_exists($response,'pic_1')){
          $path="assets/od_ava/".$response->uid.".jpg";
          $copy=copy($response->pic_1,$path);
        }
    и ниже
    $this->user->profile->photoURL      = ($copy)?$path:"";
    в папке assets надо создать папку od_ava и дать на нее права записи.
    Andrei Kulazhenko
    13 февраля 2013, 16:55
    0
    Спасибо, Алексей. Подозревал, что дело может быть в не добавленном ключе. Проверю сейчас.
      Andrei Kulazhenko
      13 февраля 2013, 17:06
      0
      Заработало
        Сергей Шлоков
        26 марта 2013, 16:31
        0
        А я никак не могу победить Одноклассники. Яндекс, твиттер, фейсбук, гугл, вконтакте, мейлру работают, а одноклассники нет. Нажимаю залогиниться и ничего не происходит. В журнале:
        [2013-03-26 13:55:09] (ERROR @ /index.php) [HybridAuth] ha_err_no_provider_keys
        [2013-03-26 13:55:09] (ERROR @ /index.php) [HybridAuth] No provider ID specified.
        [2013-03-26 13:55:09] (ERROR @ /index.php) [HybridAuth] ha_err_no_provider_keys
        Вызываю так:
        [[!HybridAuth? &providers=`Yandex,Twitter,Facebook,Vkontakte,Odnoklassniki,Mailru,Google` &logoutTpl=`tpl.HybridAuth.logout_my` &groups=`web_users`]]

        В параметрах указываю: в «id» > ID приложения, в «key» > Публичный ключ приложения, в «secret» > Секретный ключ приложения. Полдня мучаюсь, лыжи не едут. Подскажите кто знает в чем ошибка.
        А какой адрес нужно указывать в ссылке на приложение: адрес сайта или site.ru/assets/components/hybridauth/action.php?hauth.done=Odnoklassniki?
          Василий Наумкин
          26 марта 2013, 21:27
          0
          Не знаю, не подключал.

          Судя по записям в логе — что то не так с ключами. Можно еще попробовать разлогиниться с сайта и почистить кэш бразуера. Настройки кэшируются в сессии, это может помешать как-то.
          Виталий Батушев
          29 мая 2013, 07:04
          0
          А я категорически не могу забороть VK. То есть он подключился. Вроде бы. Потому что переадресация на VK идет, там авторизация проходит, пользователя сервис спрашивает о разрешении на предоставление данных такому-то серверу, происходит переадресация обратно и… Фиг. Ни регистрации пользователя, ни ошибок в логе.
          P.S. Под логином создавшего приложение вообще не входим. Видимо, это прынцып.
            Василий Наумкин
            29 мая 2013, 08:54
            0
            Да нет, я вхожу под своим логином на ВК нормально.
              Виталий Батушев
              29 мая 2013, 09:15
              0
              Вась, я и сюда даже не могу зайти под ВК. Вот это сурприз, однако.
              Это был Chrome. Из Mozilla кнопка тупо перебросила в vk.com на главную страницу аккаунта. Это попытка залогиниться на твоем сайте через ВК.
          Legushka
          27 февраля 2014, 16:24
          0
          подскажите плиз что я недоделал:
          добавляю провайдера mailru
          в настройках системы по образу и подобию делаю ключ ha.keys.Mailru
          {«id»:«715744»,«secret»:«1f570уe764b8804b7eb2a4fc3ac905b2»}
          (пару букв и цифр изменены умышленно)

          добавляю Mailru в вызов сниппета, на сайте есть иконка, залогиниваюсь — подтверждаю на майле, захожу на сайт
          появляется окно для ввода коментариев
          но нет прав на сохранение
          проверяю пользователя, а он не добавлен в группу Users. Вопрос что еще надо сделать по этому провайдеру или что я пропустил?

            Aртур Чикин
            27 февраля 2014, 17:30
            +1
            http://docs.modx.pro/components/hybridauth/snippets/hybridauth Прочитай внимательно все параметры!
              Legushka
              28 февраля 2014, 08:37
              0
              да спасибо Артур, я когда вставлял TicketComments перетаскиванием, то во всплывающем окне «выбрать опции элементов->параметры» не оказалось &groups, вот и пропустил.
              подскажите плиз еще, сейчас не работает функционал оценки коментария, стрелки вверх и вниз и нолик есть, но оценки не прибавляются. Где я еще невнимательно прочитал-)?
                Aртур Чикин
                28 февраля 2014, 08:54
                0
                Ты не можешь сам себе ставить оценки, тебе нужен 2 пользователь для проверки этого функционала. Не забудь дать права новому пользователю.
                  Legushka
                  28 февраля 2014, 09:04
                  0
                  отправил вам на почту ссылку для проверки функционала)
            Abu
            Abu
            03 декабря 2014, 23:37
            0
            Привет! Одноклассники с новым hybridauth снова не дружат?

            в логах ошибка, после авторизации ничего не происходит.

            [2014-12-03 23:33:39] (ERROR @ /var/www/user/core/components/hybridauth/model/hybridauth/lib/Providers/Odnoklassniki.php: 46) PHP warning: curl_setopt(): You must pass either an object or an array with the CURLOPT_HTTPHEADER argument

            Замена на обновленный odnoklassniki.php ничего не дала, в логах вообще пусто. Старая версия вроде нормально работает.
              Abu
              Abu
              04 декабря 2014, 01:32
              +1
              ошибся в ключе, а ночью надо спать.
              Константин Ильин
              19 января 2021, 12:10
              0
              Приветствую!
              Подскажете пожалуйста с Mailru
              В системных настройках создал по типу:
              {«keys»:{«id»:«12345»,«secret»:«12345»}}

              Приложение создал:
              prnt.sc/x76twq

              Но выходит ошибка, хотя client_id передается
              prnt.sc/x76xcv

              Может надо еще scope указывать в настройках? Что еще надо сделать?) Может кто-то настраивал недавно :)
                Евгений Webinmd
                09 декабря 2022, 15:52
                +1
                также столкнулся с настройкой. Оставлю это для потомков
                Необходимо пройти по ссылке из документации api.mail.ru/sites/my/add/
                И там уже генерировать ключи
                Там будет 3 параметра
                ID:
                Приватный ключ:
                Секретный ключ:


                Нужны два: ID и Секретный ключ
                В системных настройках создать параметр с ключем ha.keys.Mailru и значением (замените елочки на двойные кавычки)
                {«keys»:{«id»:«343245»,«secret»:«34534534534535»}}
                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                19