如何使用Meteor.js、Twitter和Oauth发布一条推文

5
我在Meteor和Twitter方面遇到了一点问题。我想要做的就是通过点击按钮发布推文。为此,我必须通过Oauth对Twitter服务进行身份验证。
目前,我正在以非常复杂的方式进行身份验证,从客户端跳转到服务器再返回。但现在我找到了Meteor.loginWithTwitter函数。起初,我认为这个函数只是用于使用Twitter密钥登录自己的应用程序,但现在我不太确定了。可能我也可以将其用于我的问题。因为似乎在Meteor中完全(并且简单地)实现了Oauth过程。
可惜我找不到任何文档或示例来仅登录并获取最终的oauth_token。所以当我尝试以下代码时,所有我从Meteor那里得到的是这个错误消息:
Erromessage: Accounts.ConfigError {message: “Service not configured”}
Meteor.loginWithTwitter( function(err){
  if (err){
    console.log(err)
  }else{
    console.log("yeah");
 }
});

我知道我需要在某个地方输入我的应用信息,例如消费者密钥,但是我不知道在哪里。有人可以帮助我吗?能否提供一些示例给我?或者告诉我是否正在正确的轨道上?
感谢和问候 Philipp
3个回答

7
最简单的方法:添加accounts-ui包:
meteor add accounts-ui accounts-twitter

在你的模板中这样做:

{{loginButtons}}

在应用程序第一次启动时,单击登录按钮将引导您完成设置过程。您需要创建一个Twitter应用程序,并将消费者密钥和消费者密钥复制到Meteor向您呈现的表单中。之后,您可以使用Twitter登录。
请确保使用最新的Meteor版本(目前为0.5.2)。

1
这个答案已经过时了,现在应该是 {{>loginButtons}} - pahan

1

你也可以使用代码配置你的消费者密钥和密钥,这是一个使用微博的示例,但它适用于 Twitter、Google 等(服务器端):

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

1
你需要在服务器端添加@Tom31建议的内容,即我有一个/server/server.js。
Accounts.loginServiceConfiguration.remove({"service": "twitter"});
Accounts.loginServiceConfiguration.insert({
 "service": "twitter",
 "consumerKey" : "<yours>",
 "secret" : "<yours>"
});

最后,您的访问令牌存储在数据库中的用户中,但此信息不会传播到客户端,如果您想要访问它,您需要创建一个服务器端方法,并通过 Meteor.callMeteor.apply 访问它。 更新:我的服务器端方法示例 我创建了这样的服务器端方法:
Meteor.methods({
...
  userGet: function(id) {
   return removeSensibleFields( Meteor.users.findOne({ _id: id }) );
  }
...
});

其中removeSensibleFields是一种方法,用于移除所有不必要/私人信息,这些信息可能不会发送回客户端。


你能提供一个服务器端方法的例子吗? - Rico

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接