Open yuri25 opened 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.
А почему на самой росяме не работает авторизация через яндекс, просто происходит пауза и потом не появляется меню пользователя и висят обычные поля ввода логина и пароля на странице авторизации?
А на моем сайте все время авторизация через мой круг выдает Ошибка 400 uri_mismatch. Если можно небольшой пример здесь или на форуме. На форуме сколько не задавал вопросов - ни на один не ответили:( Может снова проблема в неправильном callback или еще что? На росяме мой круг работает через раз, иногда нормально проходит, иногда ошибку выдает.
Только что попробовал авторизоваться на Росяме через Яндекс - всё нормально. Через Мойкруг тоже.
Ошибка 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 авторизация.
Тоже попробовал через yandex - всплыло белое окно, потом пауза секунд 5-10, потом всплывающее окно исчезло и осталась только форма авторизации. Через мой круг всплыло окно с таким содержанием: Приложение RosYama запрашивает доступ к вашим данным на Яндексе:
Получение вашего первого круга. Я нажал кнопку подтвердить и успешно авторизовался. А яндекс так и не работает. Почему у одних работает у других нет?
Могу посоветовать в конец метода fetchAttributes добавить следующий код, чтобы посмотреть, какие данных приходят с Яндекса:
echo '<pre>';
print_r($info);
yii::app()->end();
Если массив будет не пуст, то дело не в Яндексе. Дальше, зная ключи массива с данными, можно на основе этих данных организовать регистрацию - авторизацию.
На вашем сайте EAuthException
Invalid response http code: 401.
/var/www/rosyama.ru/protected/modules/userGroups/components/ServiceUserIdentity.php(84)
На моем сайте
Ошибка 400 redirect_uri_mismatch