Meteor acounts从Twitter帐户添加信息

时间:2014-03-11 17:08:05

标签: twitter meteor meteorite

我试图找出如何将用户的Twitter帐户中的其他信息添加到Meteor安装中创建的帐户。

特别是我试图通过Twitter Api v 1.1访问用户的生物,但我没有成功。

因此,我试图将Accounts.onCreateUser(function(options,user) {});扩展为Twitter生物。我怎么做?然后从模板中访问这些数据?

这里是从Github返回数据的完美答案,但我在将这种方法移植到Twitter作为身份验证服务时遇到了麻烦:Meteor login with external service: how to get profile information?

1 个答案:

答案 0 :(得分:1)

你可以这样做:

Accounts.onCreateUser(function (options, user){
   user.profile = options.profile || {};
   //Twitter returns some useful info as the username and the picture
   if(user.services.twitter){
       user.profile.picture= user.services.twitter.profile_image_url_https;
       user.profile.username= user.services.twitter.screenName;
   }
   return user;
});

为了从Twitter API获取数据,我使用的是节点包oauth:

OAuth = Npm.require('oauth');
oauth = new OAuth.OAuth(
    'https://api.twitter.com/oauth/request_token',
    'https://api.twitter.com/oauth/access_token',
    'consumerKey',
    'secretKey',
    '1.0A',
    null,
    'HMAC-SHA1'
);
getTwitterUserData: function (id) {
    var accountUser = AccountsUserCollection.findOne({_id: id});
    var url = "https://api.twitter.com/1.1/users/show.json?screen_name="+accountUser.screen_name;
    oauth.get(url, 'accessToken', 'accessSecret', function (err, data, response) {
       if(err){
          console.log(err);
       }
       if(data){
           Fiber(function () {
               AccountsUserCollection.update({_id: accountUser._id}, {$set: {dataTwitter:    JSON.parse(data)}});
           }).run();
       }
       if(response){
           Log.info(response);
       }
    });
}