Meteor facebook id vs account id

时间:2015-08-08 17:57:57

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

我正在制作一个使用帐户包和脸谱图API的应用程序。特别是朋友api。朋友api返回使用该应用程序的所有Facebook好友。问题是它返回了facebook id,而帐户包生成了特定于应用程序的id。当我想从包含朋友信息的集合中检索信息但是与特定于应用程序的id一起存储时,这是有问题的。我通过在集合中存储fb id和account id来解决这个问题。

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

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

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

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

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

有没有办法在创建时将帐户ID设置为等于facebook ID?或者你有任何其他建议。

1 个答案:

答案 0 :(得分:0)

扩展上述评论:

  

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

这是因为您正在尝试在客户端进行更新。您只能在客户端按ID进行更新。只要您在服务器上执行此操作,您尝试执行的操作就不应成为问题。

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

  

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

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

  •   
  • 不受信任的代码只能一次修改单个文档   它的_id。只有在检查之后才允许修改   适用的允许和拒绝规则。受影响的文件数量   返回回调。不受信任的代码无法执行upsert,   除了在不安全的模式下。

  •