Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
aLEX49566

Кнопка в профиле (авторизация с яндекс)

Рекомендованные сообщения

10/19/24 11:17 (изменено)

Всем привет!

У меня на сайте у тех, кто авторизироваля сторонними способами, при помощи Discord, vkontakte, steam, выводится в профиле кнопка на их профиль. Может кто помочь сделать подобную кнопку при авторизации через яндекс?

Вот пример :

<!--Ссылка на профиль Steam-->

{{if $member->steamid }}

<li>

<h4 class='ipsType_minorHeading'>Профиль</h4>

<span><a href='https://steamcommunity.com/profiles/{$data="$member->steamid"}' target="_blank" rel="noopener">STEAM <i class="fa fa-steam "></i></a></span>

</li>

{{endif}}

<!--//Ссылка на профиль Steam-->

 

Ссылка на профиль вконтакте:

{{try { $vk = \IPS\Db::i()->select( 'token_identifier', 'core_login_links', array( 'token_login_method=? AND token_member=?', 7, $member->member_id ) )->first(); } catch( \Exception $e ) { $vk = 0; } }}

{{if $vk > 0}}

<li>

<h4 class='ipsType_minorHeading'>Профиль</h4>

<span><a href="https://vk.com/id{$vk}">VK <i class="fa fa-vk"></i></a></span>

</li>

{{endif}}

 

Изменено пользователем Lesovsky
Используйте тег - код

Поделиться сообщением


Ссылка на сообщение

Приветствую!
А какой модуль для интеграции с яндексом используется? И да, там нет аналогичного свойства -

$member->steamid

?

  • Like 1

Поделиться сообщением


Ссылка на сообщение
3 часа назад, Lesovsky сказал:

Приветствую!
А какой модуль для интеграции с яндексом используется? И да, там нет аналогичного свойства -


$member->steamid

?

Я в таком коде не очень силен) 

yandexoauth.tar

Поделиться сообщением


Ссылка на сообщение

Я не уверен что токен авторизации на яндексе равен логину-id, нужно тестировать и смотреть, а так вот вам заготовка для нескольких методов.

{{$methods = [];}}
{{try { $methods = iterator_to_array(\IPS\Db::i()->select( ['token_identifier', 'token_login_method'], 'core_login_links', array( 'token_login_method IN ('.implode( ',' , [7, 8, 9] ).') AND token_member=? AND `token_linked` = 1', $member->member_id ) )); } catch( \Exception $e ) {} }}

{{if \count( $methods ) > 0}}
<li>
	<h4 class='ipsType_minorHeading'>Профиль</h4>
	{{foreach $methods as $method }}
  		{{if $method['token_login_method'] == 7}}
  			<span><a href="https://vk.com/id{$method['token_identifier']}">VK <i class="fa fa-vk"></i></a></span>
  		{{elseif $method['token_login_method'] == 8}}
  			....
  		{{endif}}
	{{endif}}
</li>
{{endif}}

Где [7, 8, 9] - это массив с id с необходимым методами авторизации, чтобы найти id метода можете выполнить запрос к базе данных (это чтобы не делать подзапрос):

SELECT * FROM `core_login_methods` WHERE `login_classname` = 'IPS\\yandexoauth\\YandexOAuth';

 Вам необходимо значение login_id.

Поделиться сообщением


Ссылка на сообщение

Завтра попробую и отпишусь. Спасибо! Если все выйдет, с меня копейка)

Поделиться сообщением


Ссылка на сообщение

Ничего из вышеперечисленного не сработало

 


login_id 	login_classname 	login_order 	login_acp 	login_settings 	login_enabled 	login_register
4
	
IPS\yandexoauth\YandexOAuth
	
4
	
0
	
{"real_name":"0","client_id":"e558765786795876856787ca","client_secret":"39276587873a2","show_in_ucp":"always","update_name_changes":"disabled","update_email_changes":"optional"}
	
1
	
1 

 

Поделиться сообщением


Ссылка на сообщение
20.10.2024 в 15:21, Lesovsky сказал:

{{if \count( $methods ) > 0}} <li> <h4 class='ipsType_minorHeading'>Профиль</h4> {{foreach $methods as $method }} {{if $method['token_login_method'] == 7}} <span><a href="https://vk.com/id{$method['token_identifier']}">VK <i class="fa fa-vk"></i></a></span> {{elseif $method['token_login_method'] == 8}} .... {{endif}} {{endif}} </li> {{endif}}

Это вызывает ошибку в системе. Можно подробнее, как использовать? 😞

Поделиться сообщением


Ссылка на сообщение
10/23/24 16:31 (изменено)

вроде разобрался. Сделал так

          <!--Ссылка на профиль яндекс-->
          {{try { $methods = iterator_to_array(\IPS\Db::i()->select( ['token_identifier', 'token_login_method'], 'core_login_links', array( 'token_login_method IN ('.implode( ',' , [4] ).') AND token_member=? AND `token_linked` = 1', $member->member_id ) )); } catch( \Exception $e ) {} }}
          {{if \count( $methods ) = 1}}
          <li>
          <h4 class='ipsType_minorHeading'>Профиль</h4>
         <span>Yandex <i class="fa fa-yandex"></i></span>
          </li>
          {{endif}}
          <!--Ссылка на профиль яндекс--> 

Работает, но появляется только если зайти с яндекса, а если уже был акк и просто привязывать яндекс к уже существующему акк, то не отображается кнопка. если убрать правило : {{if \count( $methods ) = 1}}

То кнопка появляется абсолютно у всех. Как пофиксить? Что бы появлялась кнопка и у привязанного акк и у чистого с первой регистрации через Яндекс?

Изменено пользователем aLEX49566

Поделиться сообщением


Ссылка на сообщение
10/23/24 16:36 (изменено)

второй метод (помогли в телеграм, за что отдельное спасибо:

          <!--Ссылка на профиль яндекс-->
          {{try { $yandex = \IPS\Db::i()->select( 'token_identifier', 'core_login_links', array( 'token_login_method=? AND token_member=?', 4, $member->member_id ) )->first(); } catch( \Exception $e ) { $yandex = 0; } }}
          {{if $yandex > 0}}
          <li>
          <h4 class='ipsType_minorHeading'>Профиль</h4>
          <span style="color:#fff;">Yandex</span>
          </li>
          {{endif}}
          <!--Ссылка на профиль яндекс-->  

но проблема с отображением та же

5 минут назад, aLEX49566 сказал:

Работает, но появляется только если зайти с яндекса, а если уже был акк и просто привязывать яндекс к уже существующему акк, то не отображается

 

Изменено пользователем aLEX49566

Поделиться сообщением


Ссылка на сообщение

Вроде разобрался. Яндекс оутх сама по себе глучиная оказалась 

Поделиться сообщением


Ссылка на сообщение
11 часов назад, aLEX49566 сказал:

Вроде разобрался. Яндекс оутх сама по себе глучиная оказалась 

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

Поделиться сообщением


Ссылка на сообщение
18 часов назад, aLEX49566 сказал:

{{if $yandex > 0}}

Тут >1 поставить, ошибся немного

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...