2013-03-06 109 views
2

我正在关注自定义登录找到的这个奇妙的教程作为这个职位上的答案 - http://goo.gl/VLO34 - 但它不适合我。Accounts.OnCreateUser()没有射击

我逐字复制所有文件,甚至添加辅助智能软件包,如下划线_.pick,以防万一有人需要,并错误地离开了HTTP Meteor.http.get

安美居 - 我得到GitHub的授权应用,但在Meteor.users在本地蒙戈实例的Web控制台和db.users.findOne()表明Accounts.OnCreateUser()没有任何新的信息添加到我的用户配置文件[即我在拉来自github]。换句话说,{{currentUser.profile.avatar_url}}{{currentUser.profile.login}}不会在该教程后面显示任何内容。所以我在屏幕上获得空白信息。

我试过屏幕录像第一次尝试,并注意到{loginButtons}}返回{{currentUser.profile.login}}的值。我已经多次检查了错误的代码,但是觉得有些东西与Accounts.onCreateUser(fn)相关......

我使用的是流星0.5.7,如果有其他人在屏幕录像之后遇到此问题,请让我知道。谢谢,

编辑:我已经部署该项目到 - http://rptest-customlogin.meteor.com/

回答

5

这里的截屏视频的作者。而就在几秒钟前,您的网站上有一位新用户:-)。所以,它看起来像登录正在您的网站上工作。但是我猜你的应用程序发生了什么变化,登录信息在渲染时或在打印到控制台时尚未提供。原因是所有这些信息都是异步填充的。该过程需要几秒钟才能完成。如果您在模板中依赖Meteor.user()。profile数据,则需要首先检查登录过程是否仍在进行中。

要做到这一点,您可以使用Meteor.loggingIn() JavaScript函数或{{#if loggingIn}}句柄块帮助程序。该功能是“反应性”,即一旦结果从true更改为false,您的用户界面将更新。因此,模板可能是这个样子:

<template name="loginDependentWidget"> 
    {{#if loggingIn}} 
    Logging In 
    {{else}} 
    {{currentUser.profile.avatar_url}} 
    {{/if}} 
</template> 

这是否帮助?

+0

你的建议是有道理的,帮助我了解框架的更多信息,但最终引发了我的问题的答案 - 我在{{#if logginIn}}上有一个错字,本应该是{{#if loggingIn}} - 错过了G。我想我会关闭user_logginin :)非常感谢所有花时间和我一起排解故障的人!它现在工作! – gamengineers 2013-03-07 22:19:23

+0

我总是犯这个错误。我甚至在发布我的回应时做到了!如果没有定义方法,Handlebars会返回空字符串,这可能会有点令人困惑。 – cmather 2013-03-08 18:55:55

1

可能是一个错字,但Accounts.OnCreateUser(fn);应该Accounts.onCreateUser(fn); 流星文档:http://docs.meteor.com/#accounts_oncreateuser

,然后在同一主题的另一篇文章: Meteor login with external service: how to get profile information?

编辑: 发帖如因以下部分的格式编辑的代码。 与此同时我已完成了与这段代码在我自己的项目运行:这是工作得很好

Accounts.onCreateUser(function(options, user) { 
     if(!options || !user) { 
     console.log('error creating user'); 
     return; 
    } else { 
     if(options.profile) { 
      user.profile = options.profile; 
     } 
    } 
    return user; 
}); 

。你有没有在服务器上放置Accounts.onCreateUser();

+0

这是一个错字 - 在我的描述中缩短的URL是你链接的同一篇文章 - 我从字面上复制该文件以减少语法错误。以下是该帖子末尾的截图 - http://www.eventedmind.com/posts/meteor-customizing-login。我会继续寻找语法错误,但目前只有{{currentUser.profile}}是空白的。 – gamengineers 2013-03-07 15:41:22

+0

帐户。onCreateUser()在服务器目录内。 – gamengineers 2013-03-07 21:58:38

+0

Martin,我也尝试过你的版本,并且很想提供某种信用 - 但最终,我不明白如何将user.profile分配给options.profile会让我使用ExternalService凭证,如avatar_url? Cmather调用github api,传入访问令牌,并将必要的凭据复制到profile变量中,然后将其分配给user.profile。我希望更多地了解您的思维过程,并加倍确认它是否确实符合您的要求。 – gamengineers 2013-03-07 22:22:41