脚本宝典收集整理的这篇文章主要介绍了使用PHP进行身份验证的Firebase REST访问,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
use Firebase\JWT\JWT; use GOOGLE\Auth\Credentials\ServiceAccountCredentials; use Google\Auth\HttpHandler\HttpHandlerFactory; use GuzzleHttp\Client; $email = 'account@email.COM'; $key = 'PRivate_key_goes_here'; $scoPEs = [ 'https://www.googleapis.com/auth/userinfo.email','https://www.googleapis.com/auth/firebase.database',]; $creds = [ 'client_email' => $email,'private_key' => $key,]; $serviceAccount = new ServiceAccountCredentials($scopes,$creds); $handler = HttpHandlerFactory::build(new Client()); $token = $serviceAccount->fetchAuthToken($handler); $firebase = new \Firebase\FirebaseLib($url,$token); $value = $firebase->get('test/hello'); # $value Now Stores "world"
但是,这需要Firebase中的安全规则是通用读/写,这是我不想要的.如果我将安全规则更新为:
{ "rules": { "test": { ".read": "auth != null" } } }
$value的结果变为{“error”:“Permission denied”}.我进行了广泛的搜索,并尝试了许多排列和可能的解决方案,没有确定的结果.
我已经使用this code向最终客户端提供JWT令牌,这些客户端可以成功使用它们并且可以毫无问题地利用安全规则.我最初为服务器尝试了相同的方法,但没有成功.我选择尝试将两种方法结合起来:
# Snipping code that didn't change... $serviceAccount = new ServiceAccountCredentials($scopes,$creds); $handler = HttpHandlerFactory::build(new Client()); $payload = [ 'iss' => $email,'sub' => $email,'aud' => 'https://identITytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit','iat' => time(),'exp' => time() + 60 * 60,'uid' => '123','claims' => [ 'uid' => '123',],]; $payload = $serviceAccount->updateMetadata($payload); $token = JWT::encode($payload,$key,'RS256'); $firebase = new \Firebase\FirebaseLib($url,$token); $value = $firebase->get('test/hello');
这似乎接近了,但$value现在包含{“error”:“在auth标题中缺少声明’孩子’.”}.为了解决这个问题,我修改了编码调用:
$token = JWT::encode($payload,'RS256','key_id_goes_here');
这导致了一个稍微不同的错误:在auth标题中无效声明’kid’,表明我在正确的轨道上…但不完全在那里.直接使用JWT令牌会产生完全相同的结果.我有什么想法我做错了吗?电子邮件,私钥和密钥ID都直接来自我创建服务帐户时提供的json凭证文件.
我查看了几十页的文档和帖子,以下是最有帮助的:
> Using JWT for Server Auth (Firebase Docs)
> Using Custom Tokens to make REST requests to FB DB as an admin
> Is it still possible to do server side verification of tokens in Firebase 3?
Cross发布到Firebase Google Group.
以上是脚本宝典为你收集整理的使用PHP进行身份验证的Firebase REST访问全部内容,希望文章能够帮你解决使用PHP进行身份验证的Firebase REST访问所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。