Перейти к публикации
View in the app

A better way to browse. Learn more.

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

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Опубликовано:

Всем привет!

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

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

Сейчас на странице 0

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.