如何通过HTTP REST API访问我的Firebase数据库?

GSh*_*ked 13 access-token firebase firebase-authentication firebase-realtime-database refresh-token

由于这个答案,我可以通过HTTP REST API和电子邮件/密码连接到Firebase 3.使用此API登录会返回用于访问Firebase数据库的访问令牌.此访问令牌在1小时后到期.登录后还会返回刷新令牌,我可以使用它来刷新访问令牌.这是我具体做的事情:

方法:

POST
Run Code Online (Sandbox Code Playgroud)

网址:

https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=<my-firebase-api-key>
Run Code Online (Sandbox Code Playgroud)

有效载荷:

{
    email: "<email>",
    password: "<password>",
    returnSecureToken: true
}
Run Code Online (Sandbox Code Playgroud)

响应:

{
    "kind": "identitytoolkit#VerifyPasswordResponse",
    "localId": "<firebase-user-id>", // Use this to uniquely identify users
    "email": "<email>",
    "displayName": "",
    "idToken": "<provider-id-token>", // Use this as the auth token in database requests
    "registered": true,
    "refreshToken": "<refresh-token>",
    "expiresIn": "3600"
}
Run Code Online (Sandbox Code Playgroud)

在刷新我的访问令牌的情况下:

网址:

https://securetoken.googleapis.com/v1/token?key=<my-firebase-api-key>
Run Code Online (Sandbox Code Playgroud)

有效载荷:

{
    grant_type: "refresh_token",
    refresh_token: "<refresh-token>"
}
Run Code Online (Sandbox Code Playgroud)

响应:

{
  "access_token": "<access-token>",
  "expires_in": "3600",
  "token_type": "Bearer",
  "refresh_token": "<refresh-token>",
  "id_token": "<id-token>",
  "user_id": "<user-id>",
  "project_id": "<project-id>"
}
Run Code Online (Sandbox Code Playgroud)

如果我有访问令牌,我如何通过HTTP REST API访问我的数据库?

GSh*_*ked 14

所以在与技术支持人员沟通之后,这是我的答案:

在您的数据库规则中,包含与您正在执行的操作兼容的类似内容:

{
"rules": {
"users": {
"$user_id": {
// grants write access to the owner of this user account
// whose uid must exactly match the key ($user_id)
".write": "$user_id === auth.uid",
".read": "$user_id === auth.uid"
}
    }
  } 
}
Run Code Online (Sandbox Code Playgroud)

在您的数据库中,创建一个users表,然后在其中创建一个表,其中包含您<user-id>正在使用的身份验证电子邮件/密码帐户的名称.在该表中是您可以通过您的信息访问的信息access-key.

然后发送这样的请求:

https://samplechat.firebaseio-demo.com/users/<user-id>.json?auth=<access-key>
Run Code Online (Sandbox Code Playgroud)

哪里access-key是可以被称作密钥idToken,id_Tokenaccess_key从谷歌JSON响应.

  • 这是我得到的最佳答案.Firebase文档非常混乱和混乱!他们甚至没有在REST文档中的任何地方谈论idToken.真是太遗憾了.非常感谢你. (7认同)