我希望用户能够使用多个不同的身份验证提供程序(例如Facebook,Twitter或Github)对我的Firebase应用程序进行身份验证.经过身份验证后,我希望用户无论使用哪种身份验证方法都可以访问同一帐户.
换句话说,我想将多个身份验证方法合并到我的应用程序中的单个帐户中.如何在Firebase应用中执行此操作?
authentication facebook-authentication firebase firebase-security
我在文档中找不到它,但是有没有办法定义一组用户并使用该组授予对不同位置的访问权限,而不是授予对单个用户的访问权限?
此致,LT
如果我这样做,我的itemRef一切都很好:
itemRef.child('appreciates').set(newFlag);
itemRef.child('id').set(newId);
Run Code Online (Sandbox Code Playgroud)
itemRef的其他属性仍然是BUT,child_changed被调用两次
如果我这样做:
itemRef.set({appreciates:newFlag,id:newId});
Run Code Online (Sandbox Code Playgroud)
child_changed仅被调用一次,但我的其他属性被销毁.除了重新填充整个参考对象的笨拙之外,还有一种解决方法吗?
谢谢,
蒂姆
当我使用Facebook的Open Graph API时,我注意到Facebook生成的JSONP响应似乎在每个响应的开头都有一个无关的"/**/",如下所示:
URL:
https://graph.facebook.com/SOME_ID?method=get&pretty=0&sdk=joey&callback=FB.__globalCallbacks.f1c77f051c
Response:
/**/ FB.__globalCallbacks.f887adeec(...);
Run Code Online (Sandbox Code Playgroud)
为什么是这样?
在angularFire示例中,它显示了如何从firebase获取对象集合.
app.controller('ctrl', ['$scope', '$timeout', 'angularFireCollection',
function($scope, $timeout, angularFireCollection) {
var url = 'https://ex.firebaseio.com/stuff';
$scope.col = angularFireCollection(url);
}
]);
Run Code Online (Sandbox Code Playgroud)
那只是一个对象呢?
我试过这样的事情:
fb.child('stuff/'+id).on('value', function(snapshot) {
$scope.obj = snapshot.val();
console.log('hey got the value')
console.log(snapshot.val())
});
Run Code Online (Sandbox Code Playgroud)
似乎没有用.控制台正确输出对象值,但控制器不更新.
关于设计Firestore架构的一个简单问题:
我知道你必须使用正确的工具来完成工作,而Firestore不应该是一个关系数据库,但有没有建议的技术可以模拟多对多的关系?
例如:
我想建立一个物业管理应用程序
公司拥有属性,其中包含单位.层次结构在这里很简单.
因此,租户将随着时间的推移租用多个单位,每个单位将随着时间的推移拥有许多租户......所有这些都由租约封装,将1个单位与1个或更多租户联系起来.
单位可以拥有租约我猜,但是租户如何随着时间的推移看到他们所有的租约..租约有一个参考租户的子集合..是租户顶级?
只是寻找一些基本的建议..
或者只是使用关系数据库的GraphQL更好?
我们想在我们的(主要是非Firebase托管的)项目中使用Firepad,但我们遇到了一些麻烦,找出解决问题的最佳方法.
基本上,我们有很多用户,每个用户都可以是许多组的成员.这些"组"每个都有自己的Firepad,用户可以编辑.我们已经使用MySQL开发了一个深度开发的数据库结构,并且现在不想将我们的用户数据迁移到Firebase,所以我们认为我们会更有创意.
我们不希望用户能够编辑他们不属于的组的Firepad.因此,作为我们的身份验证令牌的一部分,我们认为我们会尝试发送用户ID和他们所属的组列表.然后,使用Firebase JSON安全系统,我们可以验证当前正在编辑的Firepad是否在用户所属的组列表中.
问题是,JSON系统似乎不接受很多命令.有没有的indexOf,我不能打电话hasChild
的auth
变量.
我们如何确保用户只能编辑他们所属的群组的Firepad,而无需将所有数据迁移到Firebase?(或者维护数据库的两个副本 - 一个在MySQL上,一个在Firebase上)
由于firebase不支持任何空间索引,所以我使用geohash,有人在这里建议.Geohash正在使用角色来寻找附近的人物.
所以,假设我在w22qt4vhye1c
w99qt4vdf4vc
w22qt4vhzerct
firebase中有geohash存储,我想只查询接近哪个geohash w22qt4
.
怎么做?
我知道firebase有startAt.我试过但不行.
UPDATE
将geohash存储到firebase
//Encode lat lng, result w22qt4vhye1c3
var geoHashLatLng = encodeGeoHash(lat,lng);
firebaseRef.child('/geohash/' + geoHashLatLng).set(id);
Run Code Online (Sandbox Code Playgroud)
所以在json
root
- geohash
- w22qt4vhye1c3
- id
- z99qt4vdf4vc
- w22qt4vhzerct
Run Code Online (Sandbox Code Playgroud)
我的问题在这里.我只想查询从字符开始的geohash w22qt4
.我们可以在firebase中这样做吗?
更新2
startAt()
似乎不是以字符开头的查询...
示例:我有以下gehash
geohash节点
geohash
- a123
- a333
- b123
- c123
- d123
Run Code Online (Sandbox Code Playgroud)
使用以下代码
var firebaseRef = new Firebase('https://test.firebaseio.com');
var query = firebaseRef.child('/geohash').startAt(null, 'a');
query.on('child_added', function(snapshot) {
console.log(snapshot.name());
});
Run Code Online (Sandbox Code Playgroud)
会得到这个结果
startAt(null, 'a') //return a123, a333, b123, c123, d123 …
Run Code Online (Sandbox Code Playgroud) 有没有人尝试在Firebase中存储和/或搜索地理编码(例如lat/long)?这是内置在MongoDB中的功能,而我正在考虑将Firebase用于后端,我需要知道如何在Firebase中处理这种情况.
谢谢!
我在同一条路径上有2个"限制"查询.我首先加载"limit(1)",然后加载"limit(50)".
当我加载第二个查询时,child_added事件不按顺序触发.相反,列表中的最后一项(由limit(1)返回的项)首先被触发,然后所有其他项按顺序触发,如下所示:
**Limit 1:**
new Firebase(PATH).limit(1).on('child_added', ...)
Message 5
**Limit 2:**
new Firebase(PATH).limit(50).on('child_added', ...)
Message 5
Message 1
Message 2
Message 3
Message 4
Run Code Online (Sandbox Code Playgroud)
我很困惑为什么在第二个限制操作中首先调用"消息5".为什么会发生这种情况,我该如何解决?
我启动了这个小项目,在那里我将使用CodeMirror对代码进行实时协作.
我有一个msgs系统设置,因此很容易将对象从一个用户传递到另一个用户.我的问题是它与CodeMirror集成.我发现它有onchange的事件和replaceRange(string,from,to).
我将onchange对象传递给其他用户并使用replaceRange更新视图.问题是当使用replaceRange时,它会触发一个新的onchange并且它会前后发送msgs.任何人都知道是否有某种更新本地视图的方法,而不会触发onchange.或建议采取其他途径.(msgs系统已经设置好,并且很容易将javascript对象传递给其他客户端).
继续本线程,在HN上:https://news.ycombinator.com/item? id = 5462769
通过firefeed规则文件阅读为我回答了很多问题,除了这两个:
尝试使用Firebase REST API将哈希映射推送到列表时,将以静默方式删除任何具有空数组值的键:值对,例如:
curl -X POST -d '{"name": "Persists", "words": ["what", "is", "this"], "toBeDropped": []}' "https://fbdev.firebaseio.com/channels/example.json?auth=sometoken
Firebase数据结构中的结果:
{
"random-id": {
"name": "Persists",
"words": ["what", "is", "this"]
}
}
Run Code Online (Sandbox Code Playgroud)
这导致我们的客户端上的问题,因为他们期望toBeDropped是[]
,而不是null
在这种情况下.
firebase ×12
firepad ×2
javascript ×2
angularfire ×1
angularjs ×1
api ×1
codemirror ×1
geocoding ×1
geofire ×1
jsonp ×1
rest ×1