Meteor:登录的用户名不显示社交登录

时间:2015-12-14 18:18:13

标签: meteor meteor-blaze meteor-accounts

当我使用电子邮件和密码登录Meteor网站时,{{>loginButtons}}会显示我的用户名:

Username is showing

<li id="login-dropdown-list" class="dropdown">
  <a class="dropdown-toggle" data-toggle="dropdown">
    "Yngve Høiseth"
    <b class="caret"></b>
  </a>
  <div class="dropdown-menu">
    <button class="btn btn-block btn-primary" id="login-buttons-logout">
      Logg ut
    </button>
  </div>
</li>

但是,当我使用Twitter或Facebook登录时,没有显示名称:

Username not showing

<li id="login-dropdown-list" class="dropdown">
  <a class="dropdown-toggle" data-toggle="dropdown">
    <b class="caret"></b>
  </a>
  <div class="dropdown-menu">
    <button class="btn btn-block btn-primary" id="login-buttons-logout">
      Logg ut
    </button>
  </div>
</li>

accounts-uiian:accounts-ui-bootstrap-3都会发生这种情况。

我没有做任何奇特的事 - 只包括模板。我已尝试将{{>loginButtons}}放在导航栏之外,并且我尝试手动刷新页面,但无济于事。

1 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为当您使用users和其他第三方登录服务时,email-password架构会有所不同。要显示已记录的用户名,您需要创建一个全局users帮助程序,并在blaze内调用它。

Meteor.users.helpers({
fullName: function () {
    if (_.has(this.services, 'facebook')) {
        return this.services.facebook.name;
    }

    if (_.has(this.services, 'google')) {
        return this.services.google.name;
    }

    return null;
}
});

上面的代码演示了如何定义全局帮助器。检查您的users数据库架构并相应地获取名称。 那么你需要在这个视图中调用:

{{ currentUser.fullName }}