#1303: Как инициировать выход из учетной записи в виджете программно?

Отредактирована: 213 дней назад

Симптомы

Есть ли возможность инициировать выход из учетной записи (логаут, logout) в виджете программно?

Есть ли API для выхода из учетной записи виджета?

Решение

Да, инициировать выход из учетной записи виджета можно программно, используя стандартное браузерное API window.postMessage на DOM объекте iframe:

const iframe = document.getElementById("swarmica_widget_iframe_id");
iframe.contentWindow.postMessage({ type: "LOGOUT_WIDGET" }, "*");

Например, вот так может выглядеть код для выхода из учетной записи при нажатии кнопки:

<!-- parent HTML --> 
<button id="logoutWidgetBtn">
  Logout widget
</button>

<!-- start embedded Swarmica widget script -->
<iframe src="..." id="swarmica_widget_iframe_id" style="position: fixed; right: 12px; bottom: 12px; width: 56px; height: 56px; overflow: hidden; "
  allowTransparency="true"
  frameborder="0"
  allowTransparency="true" frameborder="0"></iframe>
<!-- rest of embed code -->
<script>
  const iframe = document.getElementById("swarmica_widget_iframe_id")
  iframe.onload = () => {
    renderWidget("swarmica_widget_iframe_id")
  }
  document.getElementById("swarmica_widget_iframe_id").addEventListener("click", 
    () => {
            if (!iframe || !iframe.contentWindow) return;
            iframe.contentWindow.postMessage({ type: "LOGOUT_WIDGET" }, "*")
  });
</script>
<!-- end embedded Swarmica widget scripts -->

Для использования этого API необходимо установить обновление v5.7.2 или выше