【问题标题】:Meteor facebook id vs accounts idMeteor facebook id 与帐户 id
【发布时间】:2015-11-01 00:45:00
【问题描述】:

我正在制作一个同时使用accounts 包和facebook 的graph api 的应用程序。特别是朋友 api。朋友 api 返回所有使用过该应用程序的 facebook 朋友。问题是它返回 facebook id,并且 accounts 包生成应用程序特定的 id。当我想从包含朋友信息的集合中检索信息但与应用程序特定的 ID 一起存储时,这是有问题的。我通过在集合中存储 fb id 和帐户 id 来解决这个问题。

但我仍然无法根据他们的 fb id 更新用户数据,因为只允许使用特定于应用程序的 id 进行更新。我想要的,但不允许的:

UserData.update({fbId: friend.fbId},{$push: {some: data}});

我能想到的唯一解决方案是首先获取每个用户 ID,如下所示:

var friendId = UserData.findOne({fbId: friend.fbId})._id;

这显然不是一个好的解决方案,因为每次更新都需要一个额外的数据库调用。

有没有办法在创建时将帐户 id 设置为等于 facebook id?或者你有什么其他的建议。

【问题讨论】:

  • UserData 是自定义集合吗?如果您要更新 Meteor.users 集合,更新时会出现什么错误?
  • @Xinzz UserData 是一个自定义集合。如果尝试使用 fbId 进行更新,我会收到以下错误:Uncaught Error: Not permitted. Untrusted code may only update documents by ID. [403]

标签: javascript facebook-graph-api meteor meteor-accounts


【解决方案1】:

扩展上面的评论:

MoeRum:@Xinzz UserData 是一个自定义集合。如果尝试使用 fbId 进行更新,我会得到 以下错误:未捕获的错误:不允许。不受信任的代码可能 仅按 ID 更新文档。 [403]

那是因为您尝试在客户端进行更新。您只能在客户端按 ID 进行更新。只要您在服务器上执行,您尝试执行的操作应该不会有问题。

来自 Meteor 文档(更多参考:http://docs.meteor.com/#/full/update):

update 的行为取决于它是否被调用 受信任或不受信任的代码。可信代码包括服务器代码和 方法代码。不受信任的代码包括客户端代码,例如事件 处理程序和浏览器的 JavaScript 控制台。

  • 受信任的代码可以通过将 multi 设置为一次修改多个文档 true,并且可以使用任意 Mongo 选择器来查找文档 调整。它绕过由允许和拒绝设置的任何访问控制规则。 受影响文档的数量将从更新调用中返回 如果你不通过回调。

  • 不受信任的代码一次只能修改一个文档,由 它的_id。只有在检查任何内容后才允许修改 适用的允许和拒绝规则。受影响的文件数量将 被返回给回调。不受信任的代码不能执行 upserts, 不安全模式除外。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多