使用外部服务登录Meteor:如何获取个人资料信息?

时间:2012-12-01 14:07:21

标签: facebook meteor github twitter login

我使用Accounts-UI和Accounts- [Github / Twitter / Facebook / Google]软件包,允许使用外部服务登录。

我使用Accounts.ui.config修改了requestPermissions,例如:

Accounts.ui.config({
  requestPermissions: {
    github: ['user'],
    facebook: ['user_photos']
  }
});

但是当我用Github(例如)登录时,我只获得了Github的名字。

与其他外部服务相同。

如何获取更多信息,例如个人资料图片的网址?

1 个答案:

答案 0 :(得分:14)

您可以使用Accounts.onCreateUser(fn)方法自定义创建用户时存储的内容。以下是一些示例代码:

Accounts.onCreateUser(function (options, user) {
  var accessToken = user.services.github.accessToken,
      result,
      profile;

  result = Meteor.http.get("https://api.github.com/user", {
    params: {
      access_token: accessToken
    }
  });

  if (result.error)
    throw result.error;

  profile = _.pick(result.data,
    "login",
    "name",
    "avatar_url",
    "url",
    "company",
    "blog",
    "location",
    "email",
    "bio",
    "html_url");

  user.profile = profile;

  return user;
});

您必须在回调函数中对服务进行额外调用以获取任何其他属性。目前,我无法直接插入Meteor用于获取身份属性的方法。