Meteor - 如果是 facebook 用户然后显示一些东西

Meteor - IF is a facebook user then display something

好吧,我不知道这是否可行,但我想要一些像 {{#if currentUser}} 啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦 {{/如果}} 但仅限于 Facebook。这是一个自定义的 facebook 评论(我不喜欢官方评论)

当您存储使用 Facebook 登录的用户时,您的用户集合会获得一个名为服务的字段。以下是我处理图像的方式:

serviceImageUser = function () {

    var user= Meteor.user();

    if(!user)
        return;

    if (user.services)
    {
        if (user.services.facebook)
            return user.services.facebook.picture;
        if (user.services.twitter)
            return user.services.twitter.profile_image_url;
        if (user.services.google)
            return user.services.google.picture;
        if (user.services.instagram)
            return user.services.instagram.profile_picture;
    }
    else
    {
        return user.profile.userProfile.picture;
    }
};

您需要添加 2 个包才能使 Facebook 登录功能正常工作。

meteor add accounts-facebook
meteor add service-configuration

accounts-facebook 插件启用 facebook 登录,服务配置允许存储我们 Facebook 应用程序 ID 的设置。

至于模板:

<template name="name">
    {{#if currentUser}}
        {{currentUser.services.facebook.picture}}
    {{/if}}
</template>

最简单的方法是从用户连接的服务集合中发布一个字段,并检查该字段在客户端上是否可用。

// overpublish the default user publication with an excerpt
// of its facebook connected service
Meteor.publish("currentUserFacebookName", function(){
  return Meteor.users.find(this.userId, {
    fields: {
      // let's publish the name, but could be something else
      "services.facebook.name": 1
    }
  });
});

然后在客户端就可以写对应的helper :

Meteor.subscribe("currentUserFacebookName");

Template.registerHelper("currentFacebookUser", function(){
  return Meteor.users.findOne({
    "services.facebook.name": {
      $exists: true
    }
  });
});