5

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

目前,我正在以一种非常复杂的方式进行身份验证,从客户端到服务器再返回。但现在我找到了 Meteor.loginWithTwitter 函数。本来我以为这个功能只是为了让你用 Twitterkeys 登录你自己的应用程序,现在我不太确定了。可能我也可以用它来解决我的问题。因为似乎 Oauth-Process 完全(并且以简单的方式)在 Meteor 中实现。

遗憾的是,我找不到任何仅用于登录并获得最终 oauth_token 的文档或示例。所以我从 Meteor 得到的只是我尝试下面的代码,是这个错误消息:

错误消息:Accounts.ConfigError {消息:“服务未配置”}

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

我知道我必须在某个地方输入我的应用信息,例如消费者密钥,但我不知道在哪里。有人可以帮助我并为我知道一些例子吗?或者知道我是否在正确的轨道上?

谢谢和问候菲利普

4

3 回答 3

7

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

meteor add accounts-ui accounts-twitter

在你的模板中做

{{loginButtons}}

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

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

于 2012-11-27T21:59:40.197 回答
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"
});
于 2013-08-06T10:51:53.830 回答
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是一种删除所有可能不会发送回客户端的不必要/私人信息的方法

于 2013-11-21T05:26:52.040 回答