【发布时间】:2014-04-06 22:52:43
【问题描述】:
根据 firebase 文档,Firebase 接受所有 REST API 类型进行身份验证。
REST API - Firebase authentication 换句话说,PUT/POST/GET 请求都可以在 HTTP 请求中用于验证授权。这是示例代码:
curl \
https://SampleChat.firebaseIO-demo.com/users/jack/name.json?auth=CREDENTIAL
Firebase 文档还指出:
参数可以是您的 Firebase Secret 或身份验证 令牌
我发送的 POST 请求是这样配置的:
var Credential = "{\"auth:\", \"zXRLa7lybhJ21ZYqpXuqkT6YAYyySAGJ10lXInKy\"}";
https://MyFirebaseName.firebaseio.com/.json?auth="+Credential
所以,我想使用 POST 请求和我的 Firebase Secret 进行服务器身份验证。我的安全规则是:
{
"rules": {
".read": true,
".write": "auth == 'zXRLa7lybhJ21ZYqpXuqkT6YAYyySAGJ10lXInKy'"
}
}
我收到从 firebase 返回的错误消息:
无效参数: "https://MyFirebaseName.firebaseio.com/.json?auth="zXRLa7lybhJ21ZYqpXuqkT6YAYyySAGJ10lXInKy"
看起来POST 请求实际上正在通过 Firebase,而 Firebase 正在读取数据。只是参数配置不正确。我已经尝试了我能想到的一切。我不确定应该如何配置CREDENTIALS,我也找不到任何关于它的信息。也许应该是这样的:
{"auth": "The Secret Here"}
我刚试过,它不接受。
我也尝试过使用:
{
"rules": {
".read": true,
".write": "auth !== null"
}
}
希望无论我在 REST API 中发送什么都会被接受,但这没有用。
我做错了什么?我已经多次查看文档,在这里搜索,搜索了一个谷歌组。我想不通。我需要知道 POST 数据如何在 CREDENTIALS 中发送的格式和语法。
【问题讨论】:
-
您是否真的在尝试针对
<something>.fireabseio-demo.com进行身份验证?您将在此处获得结果,但演示服务器没有身份验证或安全规则。 auth !== null 应该适用于任何有效的令牌。你是如何创建你的,或者你是否使用了该命名空间的秘密? -
这不是演示,不是。我没有使用令牌,我只想使用
Firebase Secret。我并不反对使用令牌,但我的印象是我可以只使用秘密进行服务器身份验证,而不是个人用户身份验证。至于 REST API 服务器身份验证的文档,我能找到的只是我在帖子顶部显示的一行示例curl等。它给出的只是?auth=CREDENTIAL。而已。我用什么代替CREDENTIAL? -
您可以在 Forge 中的安全密钥中查看,单击显示,然后将该值放在您看到 CREDENTIAL 的位置。
-
是的,我试过了。我去了
Secrets标签,点击Show并复制了我的Firebase Secret。我把它作为字符串放在 URL 的末尾;?auth="+Credential其中Credential是Firebase Secret。