Meteor:向第三方用户创建添加字段

时间:2015-07-04 05:18:37

标签: javascript meteor meteor-accounts

我正在使用user-accounts包来管理我的应用中的帐户系统。

我还整合了Google,Github,Twitter和其他第三方服务。

该软件包工作正常,但现在我需要为每个用户提供特定页面,而对于SEO术语,我需要网址如下:

https://domain.com/user/username

我也有帐户密码包。我添加了一个用户名字段,它工作正常。

但是,如果使用第三方服务,则会关闭弹出窗口,并在成功创建用户的情况下重定向页面。我读过关于调用Accounts.onUserCreate的内容, 这是我的代码:

Accounts.onCreateUser(function(options, user) {
  var email = options.profile.email;
 var ist = email.indexOf("@");
 var uname = email.slice(0,ist);
 user.username = uname;

if(options.profile){
user.profile = options.profile;
}
  return user;
});

但它会出错:Cannot read indexOf of undefined.

如何实现这一目标?

对于每个新用户,可以有一个页面,输入用户名,或者这样,应该切断电子邮件以创建用户名。 (第二种方法是首选。)

1 个答案:

答案 0 :(得分:0)

错误消息告诉您尚未设置可变电子邮件。

在Meteor上使用第三方登录服务时,用户信息不会存储在用户文档的profile中。相反,您应该在该用户文档的services数据中查找该电子邮件。例如,对于Facebook,您应该在services.facebook.email内找到它。

您可能还需要考虑使用user参数来查找此信息,因为文档说明:“用户参数是在服务器上创建的,包含一个包含所有自动生成的字段的建议用户对象”。