Сервис авторизации

Вопросы и ответы по изменению функционала, смене дизайна, переносу сайта и т.п.

Модераторы: Xpycm, Koduc

Правила форума
ВНИМАНИЕ! Форум не является средством гарантированной поддержки клиентов и пользователей. Поэтому на быстрый ответ тут рассчитывать не нужно, как и на ответ вообще. Сотрудники отвечают по мере своих возможностей.

На форуме действует ограничение в 3 сообщения / сутки.
Если Вы хотите сказать "спасибо", то воспользуйтесь функцией "Повысить репутацию" - зелёная иконка "плюс" под ником ответившего.

Re: Сервис авторизации

Сообщение akiraz » 13 июл 2012, 22:53

Может кириллический домен переводить в пуникод?
akiraz
Незнакомец
 
Сообщения: 19
Зарегистрирован: 09 фев 2012, 22:16
Очки репутации: 0

Re: Сервис авторизации

Сообщение Xpycm » 15 июл 2012, 14:04

В общем нашёл данные к 2domains.ru, где хранится не используемый рф домен.
Привязал домен к хостингу godaddy, на котором висят несколько проектов. Один момент: при добавлении домена в панели управления хостинга указывал пуникод - http://clip2net.com/s/27sxH. Иначе godaddy отказывался IDN домен.

В настройках Open API вконтакта также указал пуникод - http://clip2net.com/s/27syp

При попытке авторизации получаю такую же ошибку - {"error":"invalid_request","error_description":"redirect_uri is incorrect"}.

Но ведь всё решаемо :-)

Есть такой класс IDNA converter - http://www.phpclasses.org/package/1509- ... names.html. Почему бы не воспользоваться им...

Итак, поехали.

1) Скачиваем файл idna_convert.class.php, если лень регистрироваться на phpclasses.org, то приложил файл к посту zip архивом.
2) Копируем idna_convert.class.php в корень protected/extensions/eauth/
3) Открываем файл EOAuth2Service.php.
Ищем в нём метод public function authenticate() и после:
Код: Выделить всё
$url = $this->getCodeUrl($redirect_uri); 


вставляем:
Код: Выделить всё
$parseUrl = parse_url($redirect_uri);
                        
if 
(is_array($parseUrl) && isset($parseUrl['scheme']) && isset($parseUrl['host'])) {
    $IDNADomain = $parseUrl['scheme'].'://'.$parseUrl['host'];
    
    require_once 
'idna_convert.class.php';
    $IDN = new idna_convert();
    $IDNADomain = $IDN->encode($IDNADomain);
    
    if 
(isset($parseUrl['path']))
        $IDNADomain .= $parseUrl['path'];
        
    if 
(isset($parseUrl['query']))
        $IDNADomain .= '?'.$parseUrl['query'];
                    
    $url 
= $this->getCodeUrl($IDNADomain);
}
 


Авторизация начинает работать как часы - http://clip2net.com/s/27sVE
Вложения
idna_convert.class.zip
(19.24 КБ) Скачиваний: 1549
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: Сервис авторизации

Сообщение akiraz » 19 июл 2012, 23:27

Все получилось! Спасибо!
и через Вконтакте и через Гугль смог зайти на сайт.

Появилось другое- чтоб еще раз проверить действие, я в админке удалил пользователей созданных через вконтакте и гугл, выхожу. пытаюсь снова зайти через Вконтакте и гугл, во втором окошке видно что вроде все ок, авторизация ок, но когда перенаправление на главную страницу- там аккаунт не зашел, висит страница со входом
может где-то в кэше сохраняется что когда-то такой пользователь заходил на сайт и поэтому блокирует создание похожего акка?
akiraz
Незнакомец
 
Сообщения: 19
Зарегистрирован: 09 фев 2012, 22:16
Очки репутации: 0

Re: Сервис авторизации

Сообщение Xpycm » 20 июл 2012, 06:39

Ммм...не совсем проникся вопросом. Попробуйте почистить кеш в браузере и почистить записи в таблице {prefix}users_social.
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: Сервис авторизации

Сообщение Xpycm » 20 июл 2012, 06:44

И вот ещё.
Откройте файл protected\models\User.php.
Найдите в нём метод afterDelete() и перед:
Код: Выделить всё
$sql 'UPDATE {{apartment}} SET owner_id=1, owner_active=:active, active=:inactive WHERE owner_id=:userId';
Yii::app()->db->createCommand($sql)->execute(array(
    
':active' => Apartment::STATUS_ACTIVE,
    
':inactive' => Apartment::STATUS_INACTIVE,
    
':userId' => $this->id,
)); 


добавьте две строчки:
Код: Выделить всё
$sql 'DELETE FROM {{users_social}} WHERE user_id="'.$this->id.'"';
Yii::app()->db->createCommand($sql)->execute(); 


Эти две строки помогут избежать такой проблемы:
- Авторизировались через какой-нибудь сервис;
- Затем администратор удалил аккаунт;
- Мы уже не можем повторно войти через этот сервис;
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: Сервис авторизации

Сообщение akiraz » 22 июл 2012, 11:22

Благодарю, проблема исчезла:)
akiraz
Незнакомец
 
Сообщения: 19
Зарегистрирован: 09 фев 2012, 22:16
Очки репутации: 0

Re: Сервис авторизации

Сообщение rust122 » 03 сен 2012, 11:39

А что писать в redirect_uri?
Подключил, прописал оба кея, в redirect_uri адрес главной страниці сайта, почему-то не авторизует. Гугль ошибку redirect_uri а твитер просто открывает главную страницу без авторизации (сайт rik.org.ua)
rust122
Незнакомец
 
Сообщения: 4
Зарегистрирован: 03 сен 2012, 11:36
Очки репутации: 0

Re: Сервис авторизации

Сообщение Xpycm » 03 сен 2012, 13:16

Насколько помню нужно значение redirect_url задать значение http://domain/site/login, т.е. будет так: http://rik.org.ua/site/login.
Если не поможет, то можно попробовать установить значение redirect_url в http://rik.org.ua/site/login?service=google
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: Сервис авторизации

Сообщение Xpycm » 04 сен 2012, 11:24

Хотя для google в тестовом аккаунте у меня такая ссылка - http://domain.com/site/login?service=google_oauth
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: Сервис авторизации (глючит Вконтакте)

Сообщение Citramon » 05 май 2013, 16:24

При попытке авторизоваться с помощью ВК пишет:
"Error 500 Failed to connect to 2a00:bdc0:3:103:1:0:403:906: Network is unreachable"

Сайт: http://house.co.ua/site/login

*WALL*

ЗЫ. А с остальными социалками проблем не возникло - работают как часики!
Портал недвижимости "Хауз.ко.ЮА" http://house.co.ua/ на движке Open Real Estate
Citramon
Незнакомец
 
Сообщения: 14
Зарегистрирован: 02 мар 2013, 22:24
Очки репутации: 0

Пред.След.

Вернуться в Вопросы и помощь по изменениям

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16

cron