Подтвердить что ты не робот

MeteorJS: кнопки входа без выпадающего меню

Я знаю, что вы можете использовать

{{> loginButtons}}

чтобы получить раскрывающийся список с параметрами входа. Я хотел бы иметь кнопки входа на моей странице напрямую без выпадающего списка, так как я хотел бы, чтобы пользовательский интерфейс был чистым на мобильном устройстве. Есть ли способ разбить учетные записи ui из раскрывающегося списка и поместить его в div на главной странице?

4b9b3361

Ответ 1

Я задал тот же вопрос в #meteor, и кто-то прислал мне этот пример по настройке входа в учетную запись ui.

Это ясно и понятно. Я использовал это как руководство по настройке внешнего вида учетных записей, и он отлично работал у меня.

https://www.youtube.com/watch?v=-CTSGdQOYYg

Существует одна оговорка. В примере не выполняется сценарий, если пакет учетных записей google по-прежнему нуждается в настройке информации api. Например {{loginButtons}} станет красным и даст вам возможность настроить информацию, необходимую для работы google-аккаунтов. Реализация в примере не обрабатывает этот сценарий. Поэтому не забудьте установить эту настройку в своем приложении.

Ответ 2

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

Template.loginButtons.rendered = function()
{
    Accounts._loginButtonsSession.set('dropdownVisible', true);
};

Ответ 3

Я решил, что смогу разместить мое решение для этого с 0.8.3.

Мне нужна простая кнопка входа в систему Facebook, которая заменяется простой кнопкой "Выход" при входе в систему. Я не хотел переписывать много логики, поэтому я придумал это.

login.html:

<template name='login'>

    <div id="login-buttons">

    {{#if currentUser}}

      Hi, {{currentUser.profile.name}}
      <button id='logout-button' class='small'>Sign Out</button>

    {{else}}
      <div class="service-login-buttons">
          {{#each service}}
            {{> _loginButtonsLoggedOutSingleLoginButton}}
          {{/each}}
      </div>
    {{/if}}

    </div>

</template>

 

login.js:

Template.login.events({
  'click #logout-button': function() {
    Meteor.logout();
  }
});

Template.login.service = function()
{
    //returns an array like [{name: 'facebook'}];
    return getLoginServices();
}

getLoginService() - это глобальный, который использует учетные записи - ui для определения того, какие службы включены. Я использую это в блоке #each, чтобы убедиться, что контекст данных верен, поэтому нажатие на кнопку вызывает правильный "loginWiспасибо"

Ответ 4

@shinank - Да, это отличный учебник по настройке логинов для метеор; однако он не объясняет, как отделить кнопки из раскрывающегося списка, созданного {{loginButtons}} при использовании нескольких методов аутентификации.

Вы можете создавать свободные кнопки со следующим кодом:

<div id="login-buttons">
    <div class="login-text-and-button">
      <div class="login-button single-login-button " id="login-buttons-facebook">
        <div class="login-image" id="login-buttons-image-facebook"></div>
        <span id="sign-in-facebook" class="text-besides-image sign-in-text-facebook">Sign in with Facebook</span>
      </div>
      <br>
    </div>
    <div class="login-text-and-button">
      <div class="login-button single-login-button " id="login-buttons-google">
        <div class="login-image" id="login-buttons-image-google"></div>
        <span id="sign-in-google" class="text-besides-image sign-in-text-google">Sign in with Google</span> 
      </div>
    </div>
</div>

Затем вы можете добавить логику к клику для входа в Google-Google или вход в систему facebook и использовать следующий код:

Template.user_loggedout.events({
"click #sign-in-google": function(e, tmpl){
    Meteor.loginWithGoogle({

    }, function (err) {
        if (err){
            console.log("ERROR: " + err);//error handling
        } else {
            console.log("NO ERROR ON LOGIN");//show an alert
        }
    })
}
});

Вы всегда можете добавить requestPermissions к своей функции входа для дополнительных разрешений, которые могут потребоваться вашему веб-сайту.

Возможно, вам придется немного подкорректировать CSS, поскольку они не выглядят точно так же, как в раскрывающемся списке