3

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

我修改Accounts.ui.configrequestPermissions,例如:

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

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

与其他外部服务相同。

如何获取更多信息,例如头像的 url?

4

1 回答 1

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 用来获取身份属性的方法。

于 2012-12-14T00:33:03.597 回答