gpt4 book ai didi

authentication - 使用Firebase secret 使用HTTP POST请求对Firebase服务器端进行身份验证

转载 作者:行者123 更新时间:2023-12-04 03:14:07 24 4
gpt4 key购买 nike

根据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文档还指出:

The argument can either be your Firebase Secret or an authentication token



我发送的POST请求配置如下:
var Credential = "{\"auth:\", \"zXRLa7lybhJ21ZYqpXuqkT6YAYyySAGJ10lXInKy\"}";

https://MyFirebaseName.firebaseio.com/.json?auth="+Credential

因此,我想对我的Firebase Secret使用POST请求进行服务器身份验证。我的安全性规则是:
{
"rules": {
".read": true,
".write": "auth == 'zXRLa7lybhJ21ZYqpXuqkT6YAYyySAGJ10lXInKy'"
}
}

我收到了从Firebase返回的错误,内容为:

Invalid argument: "https://MyFirebaseName.firebaseio.com/.json?auth="zXRLa7lybhJ21ZYqpXuqkT6YAYyySAGJ10lXInKy"



似乎 POST请求实际上正在到达Firebase,而Firebase正在读取数据。只是该参数未正确配置。我已经尝试了所有我能想到的。我不确定 CREDENTIALS应该如何配置,我对此一无所获。也许应该是这样的:
{"auth": "The Secret Here"} 

我只是尝试过,它不会接受。

我也尝试过使用:
{
"rules": {
".read": true,
".write": "auth !== null"
}
}

希望无论我在REST API中发送的内容如何都可以被接受,但这是行不通的。

我究竟做错了什么?我已经遍历了很多次文档,在这里搜索过,搜索过一个Google网上论坛。我不知道。我需要知道格式和POST数据如何在CREDENTIALS中发送的语法。

最佳答案

URL无法解析json。这只是一串文字。只需直接包含 token 即可。

curl -X https://INSTANCE.firebaseio.com/users/jack.json?auth=zXRLa7lybhJ21ZYqpXuqkT6YAYyySAGJ10lXInKy  // not { auth: '...' }

当您在URL中使用Firebase secret 时,不会应用安全规则。该 secret 使您可以完全读/写访问,而无需考虑安全规则或验证。因此,无需将任何内容读入您的安全规则。

使用 token 时,您不会引用安全 token 本身。那是一个加密的json对象,其内容是安全规则中可用的内容。

要了解此处发生的情况,您需要对 token 有基本的了解。至少需要从上至下阅读 security quickstart,并从上至下阅读有关 auth variable的部分。

在auth变量部分,您将找到以下示例:
var token = tokenGenerator.createToken({"app_user_id": 1234, "isModerator": true });

请注意, token 的内容是 app_user_idisModerator。现在,您可以在安全规则中引用这两个变量:
".read": "auth.isModerator === true"

您还可以通过 fiddling with them here更好地理解 token 。允许您创建和分解 token 以查看 token 内部的内容,并根据您的命名空间对其进行验证以确保其起作用。

关于authentication - 使用Firebase secret 使用HTTP POST请求对Firebase服务器端进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22188305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com