Страница 2 из 3

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

СообщениеДобавлено: 13 июл 2012, 22:53
akiraz
Может кириллический домен переводить в пуникод?

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

СообщениеДобавлено: 15 июл 2012, 14:04
Xpycm
В общем нашёл данные к 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

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

СообщениеДобавлено: 19 июл 2012, 23:27
akiraz
Все получилось! Спасибо!
и через Вконтакте и через Гугль смог зайти на сайт.

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

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

СообщениеДобавлено: 20 июл 2012, 06:39
Xpycm
Ммм...не совсем проникся вопросом. Попробуйте почистить кеш в браузере и почистить записи в таблице {prefix}users_social.

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

СообщениеДобавлено: 20 июл 2012, 06:44
Xpycm
И вот ещё.
Откройте файл 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(); 


Эти две строки помогут избежать такой проблемы:
- Авторизировались через какой-нибудь сервис;
- Затем администратор удалил аккаунт;
- Мы уже не можем повторно войти через этот сервис;

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

СообщениеДобавлено: 22 июл 2012, 11:22
akiraz
Благодарю, проблема исчезла:)

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

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

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

СообщениеДобавлено: 03 сен 2012, 13:16
Xpycm
Насколько помню нужно значение redirect_url задать значение http://domain/site/login, т.е. будет так: http://rik.org.ua/site/login.
Если не поможет, то можно попробовать установить значение redirect_url в http://rik.org.ua/site/login?service=google

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

СообщениеДобавлено: 04 сен 2012, 11:24
Xpycm
Хотя для google в тестовом аккаунте у меня такая ссылка - http://domain.com/site/login?service=google_oauth

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

СообщениеДобавлено: 05 май 2013, 16:24
Citramon
При попытке авторизоваться с помощью ВК пишет:
"Error 500 Failed to connect to 2a00:bdc0:3:103:1:0:403:906: Network is unreachable"

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

*WALL*

ЗЫ. А с остальными социалками проблем не возникло - работают как часики!