【问题标题】:Access Token in Firebase REST request not workingFirebase REST 请求中的访问令牌不起作用
【发布时间】:2017-02-16 20:46:50
【问题描述】:

我在向 Firebase 发出经过身份验证的请求时遇到了一些问题。

我生成了一个令牌,但是当我将它发送到 Firebase 时,当我在请求中发送 access_token 时,我总是得到一个 Unauthorized request. 响应。奇怪的是,它可以在没有参数的情况下工作。

我什至在没有访问规则的情况下进行了测试,但我得到了相同的结果。

当我发送 curl 'https://<PROJECTID>.firebaseio.com/events.json' 时,我得到了期望值,但如果我发送 curl 'https://<PROJECTID>.firebaseio.com/events.json?access_token=<TOKEN>' 答案是 { "error" : "Unauthorized request." }

我已尝试将其发送到 curl -H "Authorization: Bearer <TOKEN>" https://<PROJECTID>.firebaseio.com/events.json 之类的标头中,但也不起作用。

如果我在数据库中强制执行一些规则,那么没有令牌的初始请求会给我 { "error" : "Permission denied" } 但如果我发送令牌,我仍然会收到 { "error" : "Unauthorized request." }

任何帮助将不胜感激。

更新

设法修复它。我没有正确获得令牌。检查this thread 后,我注意到在请求令牌时我没有在scopes 数组中发送https://www.googleapis.com/auth/userinfo.email。添加后效果很好。

更新 2

正如新萌所说,这在Firebase Authenticate REST Requests documentation 中也很清楚。

【问题讨论】:

  • 我在使用 AppEngine firebase 数据库示例代码时遇到了类似的问题。查看 Pyrebase python 代码,看起来参数应该是 ?auth= 但这对我也不起作用。
  • 我的问题是由对 GoogleCredentials.get_application_default().create_scoped(_FIREBASE_SCOPES) 的调用引起的。我认为此调用将身份验证标头添加到 http 请求中,并且执行不正确。如果您打印 curl 默认生成的标题,您可能会在其中看到不需要的内容?
  • @Calvin, ?auth=<TOKEN> 如果我使用已弃用的 Firebase Secret,则可以使用。不过会检查标题。谢谢。
  • firebase.google.com/docs/database/rest/auth此问题请参考官方文档
  • 您能否将自己的答案添加为答案并将其标记为已接受的答案?或者,或者,将@daniel-stenberg 的答案标记为接受的答案?

标签: curl firebase firebase-authentication


【解决方案1】:

这个问题是“自我回答”,见问题底部。这个答案在这里只是为了让这个问题不会被列为“未回答”。

【讨论】:

    猜你喜欢
    • 2016-05-23
    • 2018-05-02
    • 2019-10-30
    • 2017-12-30
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多