Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

Дизайн и модификация Invision Community

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

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

Всем привет!

У меня на сайте у тех, кто авторизироваля сторонними способами, при помощи 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

?

  • Автор
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}}

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

  • Автор

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

          <!--Ссылка на профиль яндекс-->
          {{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

  • Автор

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

          <!--Ссылка на профиль яндекс-->
          {{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 поставить, ошибся немного

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

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.