2014-05-25 24 views
0

我正在開發一個nodejs項目。 我使用passport.js進行身份驗證,效果很好,但當我嘗試獲取某些使用soundcloud的用戶的用戶名時,我遇到了麻煩。如何通過passport.js獲取soundcloud用戶名

這裏是我的代碼我的一部分,我用它來配置文件信息存儲在我的數據庫:

function findOrCreateUser (accessToken, refreshToken, profile, done) { 
    User.findOne({ oauthID: profile.id }, function(err, user) { 
     if(err) console.log(err); 
     if (!err && user != null) done(null, user); 
     else { 
      var user = new User({ 
       oauthID : profile.id, 
       name :  profile.displayName, 
       created : Date.now(), 
       pwd :  'no-pwd', 
       mail :  '', 
       path :  '' 
      }); 
      // temporary path using mongo _id 
      user.path = user._id; 
      console.log("familyName " + profile.familyName ); // undefined 
      console.log("givenName " + profile.givenName ); // undefined 
      console.log("middleName " + profile.middleName ); // undefined 
      console.log("displayName "+ profile.displayName ); // empty if the user didn't fill the field 

      if (profile.displayName == '') user.name = "Jacky Chan"; 
      // if email exists...(i cant access it on soundcloud but i don't really need it 
      if(typeof(profile.emails) != 'undefined') user.mail = profile.emails[0].value; 

      user.save(function(err) { 
       if(err) { 
        console.log(err); 
       } 
       else { 
        console.log("saving user " + user.name); 
        done(null, user); 
       }; 
      }); 
     }; 
    }); 
} 

行,所以一切工作正常這裏,profile.displayName根據passport.js documentation返回一個字符串。 問題是這個字符串是用不需要的用戶的名字和姓氏獲得的,所以它通常是空的。唯一必需的字段是用戶名。

這張照片顯示它: soundcloud user settings

所以我的問題是:

怎樣用passport.js的用戶名?

任何幫助非常感謝! :)

回答

相關問題