2013-03-06 108 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