我对流星和Twitter有一个小问题。我要做的就是通过单击按钮发布推文。为此,我必须通过Oauth对Twitterservice进行身份验证。
目前,我正在以一种非常复杂的方式进行身份验证,从客户到服务器和返回。但是现在我找到了函数Meteor.loginwithtwitter。最初,我认为此功能仅用于将您与Twitterkeys一起记录到自己的应用程序中,现在我不太确定了。可能我也可以将其用于我的问题。因为看来OAuth-Process是在流星中实现的(并且以一种简单的方式)。
可悲的是,我找不到任何文档或示例来登录并获得最终的OAuth_Token。因此,我从流星那里得到的一切,然后我尝试以下代码,是此错误:
ermomessage:accounts.configerror {消息:"不配置服务"}
Meteor.loginWithTwitter( function(err){
if (err){
console.log(err)
}else{
console.log("yeah");
}
});
我知道我必须像消费者钥匙一样进入我的信息,但我不知道在哪里。有人可以帮我,为我知道一些例子吗?还是知道我是否在正确的轨道上?
谢谢和问候菲利普
最简单的方法:添加Account-UI软件包:
meteor add accounts-ui accounts-twitter
在您的模板中做
{{loginButtons}}
在应用程序的第一个开始时,单击登录按钮将指导您完成设置过程。您将创建一个Twitter应用程序,并将消费者密钥和消费者的秘密复制为流星为您提供的形式。之后,您可以使用Twitter登录。
确保使用最新的流星版(目前0.5.2)
您还可以使用代码配置您的消费者密钥和秘密,这是微博的一个示例,但是它的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"
});
您需要在服务器端添加 @tom31建议的,即,我有a/server/server.js
Accounts.loginServiceConfiguration.remove({"service": "twitter"});
Accounts.loginServiceConfiguration.insert({
"service": "twitter",
"consumerKey" : "<yours>",
"secret" : "<yours>"
});
最后,您的访问令牌存储在数据库中,但是此信息不会传播给客户端,如果您想访问它,您可以创建服务器端方法并通过Meteor访问它。.CALL或Meteor.Apply
更新:我的服务器端方法的示例
我已经创建了这样的服务器端方法:
Meteor.methods({
...
userGet: function(id) {
return removeSensibleFields( Meteor.users.findOne({ _id: id }) );
}
...
});
其中删除是一种删除所有不必要/私人信息的方法,这些信息可能不会发送回客户端