RosYama / RosYama.2

Официальный репозиторий сайта http://rosyama.ru
http://rosyama.ru
104 stars 32 forks source link

авторизация Мой круг #24

Open yuri25 opened 11 years ago

yuri25 commented 11 years ago

На вашем сайте EAuthException

Invalid response http code: 401.

/var/www/rosyama.ru/protected/modules/userGroups/components/ServiceUserIdentity.php(84)

На моем сайте

Ошибка 400 redirect_uri_mismatch

Svechnikov commented 11 years ago

Это происходит из-за того, что в настройках приложения на Яндексе параметр "Callback URI" указан http://rosyama.ru/userGroups/?service=yandex

Тогда как авторизация через Мой круг ведёт на http://rosyama.ru/userGroups/?service=moikrug. В качестве лечения могу предложить разработчикам Росямы просто зарегистрировать второе приложение под Мой круг (либо исключить Мой круг из способов авторизации).

Хотя на том же Google есть возможность для одного приложения указывать сразу несколько Callback URI, на Яндексе почему то такого не предусмотрели.

Конкретно с Моим кругом есть ещё один подводный камень: если пользователь зарегистрирован на Яндексе, но не зарегистрирован на Моём круге, то при нажатии на кнопку "Подтвердить" происходит обращение к http://api.moikrug.ru/v1/my/ и выдаётся 401 ошибка.

upd. Оказывается, на самой Росяме под Мой круг уже зарегистрировано отдельное приложение, а на Яндексе используется Open ID) А вот exception всё равно выкидывается: Invalid response http code: 401.

yuri25 commented 11 years ago

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

yuri25 commented 11 years ago

А на моем сайте все время авторизация через мой круг выдает Ошибка 400 uri_mismatch. Если можно небольшой пример здесь или на форуме. На форуме сколько не задавал вопросов - ни на один не ответили:( Может снова проблема в неправильном callback или еще что? На росяме мой круг работает через раз, иногда нормально проходит, иногда ошибку выдает.

Svechnikov commented 11 years ago

Только что попробовал авторизоваться на Росяме через Яндекс - всё нормально. Через Мойкруг тоже.

Ошибка uri_mismatch, как я уже сказал, появляется из-за того, что callback неверный. Создайте второе приложение на Яндексе под Мойкруг.

'moikrug' => array( 'class' => 'MoikrugOAuthService', 'client_id' => 'client_id под мойкруг', 'client_secret' => 'client_secret под мой круг', ), 'yandex_oauth' => array( 'class' => 'YandexOAuthService', 'client_id' => 'client_id под яндекс', 'client_secret' => 'client_secret под яндекс', 'title' => 'Yandex (OAuth)', ),

Это если на Яндексе используется OAuth авторизация.

yuri25 commented 11 years ago

Тоже попробовал через yandex - всплыло белое окно, потом пауза секунд 5-10, потом всплывающее окно исчезло и осталась только форма авторизации. Через мой круг всплыло окно с таким содержанием: Приложение RosYama запрашивает доступ к вашим данным на Яндексе:

Получение вашего первого круга. Я нажал кнопку подтвердить и успешно авторизовался. А яндекс так и не работает. Почему у одних работает у других нет?

Svechnikov commented 11 years ago

Могу посоветовать в конец метода fetchAttributes добавить следующий код, чтобы посмотреть, какие данных приходят с Яндекса:

    echo '<pre>';
    print_r($info);
    yii::app()->end();

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