Jump to content

Реализация OpenID


cori
 Share

Recommended Posts

Добрый день!

Хочу сделать регистрацию через Wargaming OpenID, но не получается это сделать. Пробовал ставить uLogin и Loginza, но это все не подходит, т.к. необходимо вводить адрес от ВГ.

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

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

Строго не судите меня, я в этом деле полный нуб.

Link to comment
Share on other sites

но это все не подходит, т.к. необходимо вводить адрес от ВГ

А что такого сложного ввести адрес от ВГ? openID в принципе так и работает https://ru.wargaming.net/support/Knowledgebase/Article/View/430/20/chto-tkoe-servis-openid

То, что вы описываете просто больше похоже на захардкоденные настройки с предопределенным адресом ВГ, но использующий тот же OpenID протокол. Кроме того, сам опенид клиент был убран IPS с 3.3x+, мотивируя тем, что библиотеки реализующие связь долго не обновляются и не соответствуют современным требованиям PHP.

 

Видел несколько форумов ipb которые реализовали это.

Спросить у администраторов форумов которые реализовали это?

Link to comment
Share on other sites

  • 2 weeks later...

Я получаю данные через OpenID и записываю его данные в базу.)))) А вот авторизовать не получается(((( Может кто знает как это сделать???

Link to comment
Share on other sites

Авторизовать на основе чего?

После валидации полученных данных создается новый аккаунт если его нету, где пользователь дальше логируется системой, вы лишь должны загрузить массив данных в $this->member_data. Посмотрите как это реализована в методе внешней авторизации /admin/sources/loginauth/external/auth.php, или в openID старых версиях

Link to comment
Share on other sites

  • 1 month later...

Интересен сам способ реализации и технические решения, которые были применены. Расскажите немного по подробнее что в итоге у вас получилось.

Link to comment
Share on other sites

  • 3 weeks later...

Этот openID то еще говно шнягой оказался.

Хотел реанимировать старый модуль авторизации через него, но по мере изучения вопроса все больше понимаю почему разработчики его убрали. Система децентрализована (хотя это даже плюс), каждый openid провайдер работает с ним как хочет - кто-то в качестве адреса OP идентификатора использует урл с идентификатором пользователя pupkin.livejournal.com, кто-то без - ru.wargaming.net/id/, www.google.com/accounts/o8/id, кто-то отправляет email, кто-то вместо него nickname и тд. В таких условиях довольно трудно привязать авторизацию через openID к аккаунту на форуме, особенно если OP идентификатор является не уникальным. А IPS модуль писали с расчетом на то, что он будет уникальным и его можно будет привязать к аккануту. Но в случае с идентификатором ru.wargaming.net/id/ такое не выйдет - http://community.invisionpower.com/resources/bugs.html/_/ip-board/google-open-id-url-directed-identity-r26374

Разве что, как вариант, использовать в качестве привязки к аккануту хеш из md5( OP идентификатора + nickname ), если не писать для каждого сервиса отдельный интерфейс авторизации.

 

Очень интересно что в этом плане у уважаемого ТС'а получилось, и как у него реализовано привязка к аккаунту.

  • Upvote 1
Link to comment
Share on other sites

Система децентрализована (хотя это даже плюс), каждый openid провайдер работает с ним как хочет - кто-то в качестве адреса OP идентификатора использует урл с идентификатором пользователя pupkin.livejournal.com, кто-то без - ru.wargaming.net/id/, www.google.com/accounts/o8/id, кто-то отправляет email, кто-то вместо него nickname и тд.

 

Мы уже пришли к тому, что легче самим подключить авторизацию через любые соц. сети и объединить в нужный нам интерфейс. Благо, что практически все уже юзают OAuth 2.0, за исключением твиттера (у них OAuth 1) и ЖЖ

Link to comment
Share on other sites

Да я его начал то смотреть из-за ажиотажа вокруг него. В последнее время с стабильной регулярностью появляются темы с авторизацией через openid WG. Сделаю привязку к аккаунту форума на основе хеша identity_url + nickname, думаю такой хеш будет достаточно уникальным чтобы можно было идентифицировать пользователя с не уникальным OP идентификатором, как в случае Wargaming. Потом, может быть сделаю отдельный интерфейс для авторизации специально через WG, как фейсбука или вконтакте.

Link to comment
Share on other sites

Все оказалось проще, это IPS'овцы изначально немного заговнокодили и ввели людей в заблуждения. Они использовали для идентификатора identity_url урл который ввел пользователь (а в случае с WG и ему подобных это единый адрес для всех), хотя сервис в ответ возвращает параметр openid_claimed_id который является уникальным адресом пользователя (если верить инфы с стековерфлоу). Пожалуй откажусь от хеша в пользу claimed_id.

Все сводится к тому, чтобы при валидации данных _checkFirstPass() задать для идентификатора $this->data_store['fullurl'] полученный от провайдера openid_claimed_id, а не тот адрес который ввел пользователь и хранится в таблице openid_temp.

 

		if( is_array($sreg) and count($sreg) )
		{
			$this->data_store = array_merge( $this->data_store, $sreg );
		}

		if( $this->request['openid_claimed_id'] )
		{
			$this->data_store['fullurl'] = $this->request['openid_claimed_id'];
		}

Link to comment
Share on other sites

  • 1 month later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...