如何使用Meteor.js,Twitter和Oauth发布推文

时间:2012-11-07 15:50:52

标签: javascript twitter oauth twitter-oauth meteor

我对Meteor和Twitter有点问题。 我想做的就是通过点击按钮发布推文。为此,我必须通过Oauth对Twitterservice进行身份验证。

目前,我正以一种非常复杂的方式进行身份验证,从客户端到服务器并返回。但现在我找到了Meteor.loginWithTwitter功能。最初我认为这个功能只是用于使用Twitterkeys将您登录到自己的应用程序中,现在我不再那么肯定了。也许我也可以用它来解决我的问题。因为看起来Oauth-Process完全(以简单的方式)在Meteor中实现。

可悲的是,我找不到任何只是登录并获得最终oauth_token的文档或示例。所以我从Meteor得到的所有内容然后我尝试以下代码,这是错误消息:

Erromessage:Accounts.ConfigError {message:“Service not configured”}

Meteor.loginWithTwitter( function(err){
  if (err){
    console.log(err)
  }else{
    console.log("yeah");
 }
});

我知道我必须在某个地方输入我的Appinformation,比如Consumer键,但我不知道在哪里。有人可以帮助我,并为我知道一些例子吗?或者知道我是否走在正确的轨道上?

谢谢和问候 菲利普

3 个答案:

答案 0 :(得分:6)

最简单的方法:添加accounts-ui包:

meteor add accounts-ui accounts-twitter

并在您的模板中执行

{{loginButtons}}

首次启动应用程序时,单击登录按钮将指导您完成设置过程。您将创建一个Twitter应用程序,并将消费者密钥和消费者密钥复制到流星呈现给您的表单中。之后您可以使用Twitter登录。

确保使用最新的Meteor版本(此时为0.5.2)

答案 1 :(得分:1)

您还可以使用代码配置您的消费者密钥和密码,这是微博的一个例子,但它适用于Twitter,谷歌等......(服务器端):

// first, remove configuration entry in case service is already configured
Accounts.loginServiceConfiguration.remove({
    service: "weibo"
});
Accounts.loginServiceConfiguration.insert({
    service: "weibo",
    clientId: "1292962797",
    secret: "75a730b58f5691de5522789070c319bc"
});

答案 2 :(得分:1)

您需要在服务器端添加@ Tom31建议的 ,即我有/server/server.js

Accounts.loginServiceConfiguration.remove({"service": "twitter"});
Accounts.loginServiceConfiguration.insert({
 "service": "twitter",
 "consumerKey" : "<yours>",
 "secret" : "<yours>"
});

最后,您的访问令牌存储在您的用户数据库中,但是这些信息不会传播到客户端,如果您想要访问它,您可以创建服务器端方法并通过{访问它{3}}或Meteor.call

已更新:我的服务器端方法示例

我已经创建了我的服务器端方法:

Meteor.methods({
...
  userGet: function(id) {
   return removeSensibleFields( Meteor.users.findOne({ _id: id }) );
  }
...
});

其中 removeSensibleFields 是一种删除可能无法发送回客户端的所有不必要/私人信息的方法