我正在创建一个自定义的用户管理系统,涉及所有的应用程序数据在应用程序服务器上,但手机应该通过firebase认证。当新用户在系统上注册时,将进行Firebase电话身份验证。从firebase成功进行身份验证后,注册数据将通过API发送到服务器。现在的问题是,我如何检查服务器端的电话号码是否通过firebase的身份验证?如果我允许在没有服务器端firebase身份验证情况下进行注册,则API请求可能会被某人欺骗。我现在使用的是kreait/firebase-php ^4.18
Firebase SDK。我现在使用的流程如下所示
我想要实现的流程也可以给出,
更新25/09/2019
库Kreait\Firebase
帮助实现了@jeromegamez在接受的答案中给出的流程,然而,Kreait\Firebase
不支持ios设备的idToken
验证。IOS设备有谷歌idToken,而不是firebase IdToken,因此Kreait\Firebase
无法验证它。简要的问题在Firebase IOS idToken invalid kid
Exception in the backend while verifyIdToken
in Gmail Auth帖子中给出。
发布于 2019-09-14 04:53:47
Firebase Rest API具有method for that。
在设备上,在用户通过身份验证并且您拥有user对象之后,要获取用于验证的令牌,可以调用
使用Android的
getIdToken()
getIDToken()
-getIDTokenWithCompletion:
使用JS (web或其他平台)的
getIdToken()
中的一系列其他平台
然后,使用该临时id令牌,您可以将a POST request发送到https://identitytoolkit.googleapis.com/v1/accounts:lookup?key=[API_KEY] (API_KEY
是Firebase项目的"Web API密钥“)以获取用户信息,其中将包括令牌所有者的phoneNumber
。
因此,您可以在服务器端验证令牌的所有者是否拥有该特定电话号码。
https://stackoverflow.com/questions/55121166
复制相似问题