[EAuth] Единая авторизация пользователей
Re: [EAuth] Единая авторизация пользователей
Вопрос снимается, проблема была в том, что в сессию не ложилось значение return_uri
Re: [EAuth] Единая авторизация пользователей
Добрый день всем
Новичок в Yii. Использую данное расширение в своём приложении.
Спасибо за него огромное автору.
Но сейчас обнаружил проблему - с которой никак не могу справиться.
Пользуюсь авторизацией VK и FB
Суть проблемы:
В некоторых браузерах (например Chrom) при авторизации черех FB возникает циклическая ошибка переадресаций:
"Загрузка веб-страницы по адресу https://www.facebook.com/dialog/oauth?client_id=.... вызвала слишком много переадресаций. Попробуйте очистить для этого сервера файлы cookie или разрешить их прием от независимых сайтов. Если это не поможет, возможно, проблема связана не с вашим компьютером, а с конфигурацией сервера."
Код ошибки: ERR_TOO_MANY_REDIRECTS
не могу понятьчто происходит. Кто то сталкивался с данной проблемой?
--------------
Вопрос решён, всем спасибо
Новичок в Yii. Использую данное расширение в своём приложении.
Спасибо за него огромное автору.
Но сейчас обнаружил проблему - с которой никак не могу справиться.
Пользуюсь авторизацией VK и FB
Суть проблемы:
В некоторых браузерах (например Chrom) при авторизации черех FB возникает циклическая ошибка переадресаций:
"Загрузка веб-страницы по адресу https://www.facebook.com/dialog/oauth?client_id=.... вызвала слишком много переадресаций. Попробуйте очистить для этого сервера файлы cookie или разрешить их прием от независимых сайтов. Если это не поможет, возможно, проблема связана не с вашим компьютером, а с конфигурацией сервера."
Код ошибки: ERR_TOO_MANY_REDIRECTS
не могу понятьчто происходит. Кто то сталкивался с данной проблемой?
--------------
Вопрос решён, всем спасибо
Последний раз редактировалось nemolinks 2013.08.28, 18:14, всего редактировалось 1 раз.
- osys
- Сообщения: 1
- Зарегистрирован: 2013.08.28, 03:06
- Откуда: Saint Pete, Russia
- Контактная информация:
Re: [EAuth] Единая авторизация пользователей
Всем доброго дня!
Не могу понять, почему не сохраняется запись в бд. В данном примере создается новый экземпляр класса UserService(). Это стандартный класс yii или требуется доп. модуль? Если да - то почему yii не ругается на то что не может создать т.к. дополнительных модулей я не устанавливал.
Сразу оговорюсь что включил debug режим и поставил yii-debug.
Спасибо.
Оценил, но возникло несколько вопросов. Сразу хотел бы оговориться это мой 2ой день с Yii.madmis писал(а):Код: Выделить всё
public function authenticate() { // если пользователь авторизован через сервис // выполняем дальнейшие действия if ($this->service->isAuthenticated) { $userServiceModel = UserService::model()->getUserByService($this->service); $this->errorCode = self::ERROR_NONE; // если пользователь есть, просто авторизуем его if ($userServiceModel != null) { $userServiceModel->user->lastvisit = Yii::app()->format->formatDbDate('now'); $userServiceModel->user->save(); } else { // если пользователя нет, добавляем его $userModel = new User(); if ($userModel->add($this->service->getAttribute('name')) && $userModel->id != null) { // Добавляем запись в user_service $userServiceModel = new UserService(); $userServiceModel->user_id = $userModel->id; $userServiceModel->service = $this->service->serviceName; $userServiceModel->identity = $this->service->id; if (!$userServiceModel->save()) { $this->errorCode = self::ERROR_INSERT_USER_SERVICE; } } else { $this->errorCode = self::ERROR_INSERT_USER; } } if (!$this->errorCode) { $this->id = $userServiceModel->user_id; $this->name = $userServiceModel->user->username; $this->setState('id', $this->id); $this->setState('name', $this->name); $this->setState('serviceId', $this->service->id); $this->setState('service', $this->service->serviceName); } } else { $this->errorCode = self::ERROR_NOT_AUTHENTICATED; } return !$this->errorCode; }
Не могу понять, почему не сохраняется запись в бд. В данном примере создается новый экземпляр класса UserService(). Это стандартный класс yii или требуется доп. модуль? Если да - то почему yii не ругается на то что не может создать т.к. дополнительных модулей я не устанавливал.
Сразу оговорюсь что включил debug режим и поставил yii-debug.
Спасибо.
Re: [EAuth] Единая авторизация пользователей
Здравствуйте!
Что-то никак не могу подключить mail.ru
Сейчас при регистрации приложения они выдаю два ключа "Приватный ключ" и "Секретный ключ", куда их вставить - не пойму.
Устанавливаю в настройках хоть первый хоть второй - результат один - не пускает.
что я делаю не так ?
Что-то никак не могу подключить mail.ru
Сейчас при регистрации приложения они выдаю два ключа "Приватный ключ" и "Секретный ключ", куда их вставить - не пойму.
Устанавливаю в настройках хоть первый хоть второй - результат один - не пускает.
что я делаю не так ?
-
- Сообщения: 339
- Зарегистрирован: 2012.01.06, 22:07
Re: [EAuth] Единая авторизация пользователей
Nodge, в первую очередь, благодарю за замечательное расширение)
Возник вопрос, возможно ли отследить в контроллере валидацию OpenID? Следующий код не даёт нужных результатов:
Необходимость в проверке возникла из-за соединения главной пользовательской модели и данного расширения. Перед авторизацией я проверяю статус пользователя, если он забанен, то выводится соответствующее сообщение. Всё хорошо, но, в адресной строке остаются GET-параметры. И если заново перейти по тому же адресу, выводится эксепшен. Обойти данную проблему можно с помощью флеш-сообщения вместо ошибки валидации, но хотелось бы более красивое решение, например, переход на другую страницу.
Возник вопрос, возможно ли отследить в контроллере валидацию OpenID? Следующий код не даёт нужных результатов:
Код: Выделить всё
$auth = Yii::app()->loid->load();
if(!empty($_REQUEST['openid_mode']) && $auth->validate())
// code...
Re: [EAuth] Единая авторизация пользователей
Тут может кто нибудь рассказать как при использовании данного расширения делать запросы по апи к вк.
мне нужно получать данные о пользователе, о его стене, альбомах, пабликах.
Мне нужно производить запись на его стену, альбомы и тд
Мне нужно чтоб пользователь вступал в группы и паблики
Очень хотелось бы чтоб работало все по такой схеме
Токен и прочая лабуда подставляются автоматом к запрос на сервер вк, а так же распарсеваеся json а я получаю в переменную "Необходимые данные" массив.
Не прошу написать код, прошу помочь разобраться как это сделать, не могу разобраться как работают с крипты у автора, много наследований, интерфейсы... Очень сложно.....
мне нужно получать данные о пользователе, о его стене, альбомах, пабликах.
Мне нужно производить запись на его стену, альбомы и тд
Мне нужно чтоб пользователь вступал в группы и паблики
Очень хотелось бы чтоб работало все по такой схеме
Код: Выделить всё
Переменая = new Класс на сайте;
Необходимые данные = Переменная.Метод класса("Метод в контакте",array("Параметры метода в контакте"));
Не прошу написать код, прошу помочь разобраться как это сделать, не могу разобраться как работают с крипты у автора, много наследований, интерфейсы... Очень сложно.....
-
- Сообщения: 339
- Зарегистрирован: 2012.01.06, 22:07
Re: [EAuth] Единая авторизация пользователей
Barssoft, я предполагаю, что необходимо создать наследника, вызывая необходимые тебе методы.
Код: Выделить всё
class MyVKontakteOAuthService extends VKontakteOAuthService
{
protected $scope = '';
/**
* http://vk.com/dev/fields
*
* @see VKontakteOAuthService::fetchAttributes()
*/
protected function fetchAttributes()
{
$info = (array) $this->makeSignedRequest('https://api.vk.com/method/users.get.json', array(
'query' => array(
'uids' => $this->uid, // uid, first_name and last_name is always available
'fields' => 'sex, bdate, photo_200, screen_name, city, country, timezone',
),
));
// code
}
}
Re: [EAuth] Единая авторизация пользователей
Про наследника я понял, но не могу понять как работает данный кодJoseph Jevelin писал(а):Barssoft, я предполагаю, что необходимо создать наследника, вызывая необходимые тебе методы.
Код: Выделить всё
class MyVKontakteOAuthService extends VKontakteOAuthService { protected $scope = ''; /** * http://vk.com/dev/fields * * @see VKontakteOAuthService::fetchAttributes() */ protected function fetchAttributes() { $info = (array) $this->makeSignedRequest('https://api.vk.com/method/users.get.json', array( 'query' => array( 'uids' => $this->uid, // uid, first_name and last_name is always available 'fields' => 'sex, bdate, photo_200, screen_name, city, country, timezone', ), )); // code } }
Код: Выделить всё
protected function fetchAttributes()
{
$info = (array) $this->makeSignedRequest('https://api.vk.com/method/users.get.json', array(
'query' => array(
'uids' => $this->uid, // uid, first_name and last_name is always available
'fields' => 'sex, bdate, photo_200, screen_name, city, country, timezone',
),
));
// code
}
что будет в инфо тут в результате?
Re: [EAuth] Единая авторизация пользователей
Код: Выделить всё
$vk = new CustomVKontakteService();
$vk->authenticate();
$vk->fetchAttributes();
Если не сложно может кто делал пример расширенного класса для получения записи данных, выложите код.. В данной теме написано что можно без авторизации постоянной работать, как то там токен в сессию сохранять используя класс EOAuth2Service, я проследил и класс CustomVKontakteService является наследником от класса EOAuth2Service, как то значить можно по человечески сделать, но я не знаю как ((((
-
- Сообщения: 339
- Зарегистрирован: 2012.01.06, 22:07
Re: [EAuth] Единая авторизация пользователей
По первому вопросу. Сам я не пробовал реализовать подобное, но по логике, ты должен забирать данные, подключаясь к нужным методам (http://vk.com/dev/methods).
Пример со стеной:
Не факт, что сработает, но суть должен уловить.
Пример со стеной:
Код: Выделить всё
$wall = (array) $this->makeSignedRequest('https://api.vk.com/method/wall.get.json', array(
'query' => array(
'owner_id' => $this->uid,
'offset' => 0,
'count' => 1,
'filter' => 'owner',
),
$wall = $wall['response'][0];
$text = $wall->text;
));
Re: [EAuth] Единая авторизация пользователей
А как тогда запись делать? почему функцию авторизации нужно запрашивать перед тем как данные получить... В апи написано что токен можно использовать, который действителен 1 час.Joseph Jevelin писал(а):По первому вопросу. Сам я не пробовал реализовать подобное, но по логике, ты должен забирать данные, подключаясь к нужным методам (http://vk.com/dev/methods).
Пример со стеной:Не факт, что сработает, но суть должен уловить.Код: Выделить всё
$wall = (array) $this->makeSignedRequest('https://api.vk.com/method/wall.get.json', array( 'query' => array( 'owner_id' => $this->uid, 'offset' => 0, 'count' => 1, 'filter' => 'owner', ), $wall = $wall['response'][0]; $text = $wall->text; ));
Я просто понять хочу могу ли я использовать данное расширение для целей которые мне нужны, или оставить только авторизации, написать класс в котором будут методы формирования урла, запроса по curl по этому урлу, и расспарсивание данных которые отдал сервер вк... Так как скажем разместить новость с картинкой, нужно будет загрузить картинку по апи, получить ее ссылку, подключить ее к новости с текстом, и опубликовать
Re: [EAuth] Единая авторизация пользователей
Ребята, подскажите пожалуйста после этого окна
выходит ошибка EAuthException SSL certificate problem: self signed certificate in certificate chain
что мне делать?
Использую wamp сервер, extension=php_curl.dll включен, версия из master ...
выходит ошибка EAuthException SSL certificate problem: self signed certificate in certificate chain
что мне делать?
Использую wamp сервер, extension=php_curl.dll включен, версия из master ...
Последний раз редактировалось geniy 2014.03.21, 19:09, всего редактировалось 2 раза.
Re: [EAuth] Единая авторизация пользователей
а всё, решил проблему.... два дня ушли.. жаль конечно, но это того стоилоgeniy писал(а): выходит ошибка EAuthException SSL certificate problem: self signed certificate in certificate chain
Использую wamp сервер, extension=php_curl.dll включен...
для других людей, кто встретится с такой проблемой: дополняем строкой curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); в файле EAuthServiceBase.php в функции initRequest
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - Решение получше
Re: [EAuth] Единая авторизация пользователей
спасибо тебе, добрый человекgeniy писал(а):а всё, решил проблему.... два дня ушли.. жаль конечно, но это того стоилоgeniy писал(а): выходит ошибка EAuthException SSL certificate problem: self signed certificate in certificate chain
Использую wamp сервер, extension=php_curl.dll включен...
для других людей, кто встретится с такой проблемой: дополняем строкой curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); в файле EAuthServiceBase.php в функции initRequest
-
- Сообщения: 251
- Зарегистрирован: 2014.08.18, 14:01
Re: [EAuth] Единая авторизация пользователей
Еще косяк вылез после обновления Firefox до 32 версии (Mac) и не работает всплывающее окно при авторизации хотя параметр в настройках стоит true
Re: [EAuth] Единая авторизация пользователей
В конфиге указал только Facebook.
Всплывает окно, пароль вводится и после этого EAuthException: Protocol https not supported or disabled in libcurl
Как эта проблема решаеться?
Всплывает окно, пароль вводится и после этого EAuthException: Protocol https not supported or disabled in libcurl
Как эта проблема решаеться?
Re: [EAuth] Единая авторизация пользователей
Catch говорит, что ошибка возникает тут:
if (curl_errno($ch) > 0)
throw new EAuthException(curl_error($ch), curl_errno($ch));
if (curl_errno($ch) > 0)
throw new EAuthException(curl_error($ch), curl_errno($ch));
-
- Сообщения: 1
- Зарегистрирован: 2015.01.27, 12:48
Re: [EAuth] Единая авторизация пользователей
прошу помогите,
Re: [EAuth] Единая авторизация пользователей
Развитие библиотеки прекращено?
Re: [EAuth] Единая авторизация пользователей
Делать в коде
Для того, что проверка работала:
- идём сюда http://curl.haxx.se/docs/caextract.html и качаем cacert.pem
- сохраняем его в c:\php\cacert.pem например
- добавляем в php.ini строку
не безопасноcurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
Для того, что проверка работала:
- идём сюда http://curl.haxx.se/docs/caextract.html и качаем cacert.pem
- сохраняем его в c:\php\cacert.pem например
- добавляем в php.ini строку
Код: Выделить всё
curl.cainfo=c:\php\cacert.pem