【问题标题】:Turn Firebase 'idToken' into 'access token' with no backend?将 Firebase 的“idToken”变成没有后端的“访问令牌”?
【发布时间】:2018-01-26 21:37:33
【问题描述】:

我正在尝试通过调用以下方式创建匿名用户来使用 Firebase REST API:

https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=[API_KEY].

没问题,回复(为了保密,修改了一下):

{
 "kind": "identitytoolkit#SignupNewUserResponse",
 "idToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjM0NTBiMGJhOWUzMTcyMmUwOTBlZDIxMzViY2RiN2MxNzdhMzJmMjcifQ.eyJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vZmlzaGluYy1hcHAiLCJwcm92aWRlcl9pZCI6ImFub255bW91cyIsImL1ZCI6ImZpc2hpbmMtYXBwIiwiYXV0aF90aW1lIjoxNTAzMDQ1NjY4LCJ1c2VyX2lkIjoiQ2hKRUJ3Vk5HeVA0NmtEQzA3d1VKMUJ3Y3Q3MyIsInN1YiI6IkNoSkVCd1ZOR3lQNDZrRENwN3dVSjFCd2N0NzMiLCJpYXQiOjE1MDMwNDU2NjgsImV4cCI6MTUwMzA0OTI2OCwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6e30sInNpZ25faW5fcHJvdmlkZXIiOiJhbm9ueW1vdXMifX0.jdMuPVGvMT6qZoxynpGMqURqg9zrVbPl1kXxmbHoglGgi9u1HHwQft5hhKIS3QbS87-rr5BcEitCu5seHcDlWl3rzEx87fctHmY4z-vDqUUKIqjKHfB0q04SbzBKVUvuUg9O-ACWMDLWFZ54U4ALK7kFdlBti3600kqw_4-UGURa2jIPpOse9f8HIz_qGaO_5kptjO6v4drLhY6PPH_h1kO4p1DITWt6pfdn_E_tAqXZgsCK3iKhu4bYUc2DgiUfR7q3dfzravQyz2nrpDN6S3Z_NdzxiKRuyasPr7kpeqxGaAPCYX84P_GL6r-EEFCcVeouRukRvloRpoezOSkeRg",
 "refreshToken": "APRrRCIqIUK5BiJIjpIt-ZtSdvn6ybONtTccCPOzIWAxg9qsClqdR82vqYmb0TMS1xngpCvlbIzgTSDTycvSoSYgua1r-6RlAt83Z2jXKTAnGalAHQLsC_gpUeF7js9PWl8O8PP5KF64coel22pgysd39QwC2Z2yf6zJj7xoozF0eaLjmkyvzqs",
 "expiresIn": "3600",
 "localId": "ChJEBwVNGyP46kDC07wUJ1Bwct73"
}

我的印象是我现在有一个“已验证”/已登录的用户。并且我可以使用 idToken 从 Realtime DB 读取数据(前提是唯一的规则是用户是经过身份验证的)。

但这似乎并非如此 (receive "Unauthorized request.") ,或者我错过了什么。在谷歌搜索之后似乎我需要一个自定义后端来将 idToken “转换”为访问令牌。对吗?

【问题讨论】:

  • 你不能允许读取 w/o 身份验证吗? firebase.google.com/docs/database/security这将是最简单的方法。
  • 我可以,但我不希望任何人始终访问数据库。仅限创建的匿名用户,因为他们只能对自己的数据进行写/读访问。

标签: rest firebase firebase-realtime-database firebase-authentication


【解决方案1】:

呃。文档似乎有点混乱,上面写着:

所有请求类型都支持。验证此请求以允许 访问受 Firebase 实时数据库规则保护的数据。见 REST 身份验证文档了解详细信息。

卷曲 'https://[PROJECT_ID].firebaseio/users/jack/name.json?access_token=CREDENTIAL'

但是使用access_token 参数是错误的(至少在我的情况下),我需要使用“auth”来代替。

所以这会起作用:

curl 'https://[PROJECT_ID].firebaseio/users/jack/name.json?auth=myIdTokenHere'

【讨论】:

  • 我不确定access_token 现在是否有效,但文档仍然说要使用 access_token。
猜你喜欢
  • 2020-09-15
  • 1970-01-01
  • 2015-09-27
  • 2020-09-16
  • 2013-11-02
  • 2021-09-01
  • 2018-02-19
  • 2021-11-22
  • 1970-01-01
相关资源
最近更新 更多