【问题标题】:How to Authenticate GET Requests to Firebase Firestore Through the REST API如何通过 REST API 验证对 Firebase Firestore 的 GET 请求
【发布时间】:2020-02-25 19:05:41
【问题描述】:

我想通过 REST API 向 Firestore 执行经过身份验证的 GET 请求。当我将 Firestore 规则设置为时,我可以成功执行 GET 请求:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

我为此使用的 GET 请求的格式如下:

https://firestore.googleapis.com/v1/projects/YOUR_PROJECT_ID/databases/(default)/documents/cities/LA

但是,如果我添加身份验证并将规则更改为:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth.uid != null;
    }
  }
}

我需要能够验证我的 GET 请求。我可以按照以下格式发出 POST 请求:

https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=[API_KEY]&email=[EMAIL]&password=[PASSWORD]

这会返回一个 idToken,我想用它来验证我的 GET 请求。

我该怎么做?我尝试使用新的 idToken 将 KEY 添加到我的 GET 请求中,但我没有运气。

【问题讨论】:

    标签: firebase google-cloud-firestore firebase-authentication


    【解决方案1】:

    获得 ID 令牌后,您可以使用带有不记名令牌的 Authorization 标头将其传递给 REST API:

    Authorization: Bearer ${idToken}
    

    更多信息请参见the docs

    【讨论】:

    • 您好,感谢您的回答!这通过邮递员工作。我添加了一个 Authorization 标头,其中 Bearer 作为 idToken。但是,它看起来不像更改参数那样更改了 GET 请求的格式。带有授权的 GET 请求是什么样的?
    • 标头不包含在 URL 中,它们必须单独编码。例如,在 cURL 中,您可以使用 curl --header "Authorization: Bearer $TOKEN" https://the.url/。无论您使用哪种编程语言,都肯定会有关于如何向 HTTP 请求添加标头的文档。
    • 太好了,谢谢。现在一切正常。
    猜你喜欢
    • 1970-01-01
    • 2020-05-22
    • 2021-08-11
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 2021-10-05
    • 2021-12-31
    • 2020-06-14
    相关资源
    最近更新 更多