我对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键,但我不知道在哪里。有人可以帮助我,并为我知道一些例子吗?或者知道我是否走在正确的轨道上?
谢谢和问候 菲利普
答案 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 是一种删除可能无法发送回客户端的所有不必要/私人信息的方法