Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Firebase JWT的PHP Slim_Php_Firebase_Jwt_Middleware_Slim - Fatal编程技术网

使用Firebase JWT的PHP Slim

使用Firebase JWT的PHP Slim,php,firebase,jwt,middleware,slim,Php,Firebase,Jwt,Middleware,Slim,我试图在没有任何运气的情况下将Firebase Auth与PHP Slim(JWT)集成。我使用firebase用户登录并正确保存令牌。然后我将midleware.php设置为: $app->add(new Tuupola\Middleware\JwtAuthentication([ "ignore" => ["/countries","/faqs"], "secret" => $secrets, "secure" => false ])); 这

我试图在没有任何运气的情况下将Firebase Auth与PHP Slim(JWT)集成。我使用firebase用户登录并正确保存令牌。然后我将midleware.php设置为:

$app->add(new Tuupola\Middleware\JwtAuthentication([
    "ignore" => ["/countries","/faqs"],
    "secret" => $secrets,
    "secure" => false
]));
这孩子是从哪里来的securetoken@system.gserviceaccount.com. 然而,我不断得到一个错误401未授权


当我使用自定义$secret和自定义jwt尝试它时,同样的代码也可以工作。Firebase在JWT身份验证中需要额外的东西吗

所以问题在于Tuupola的JwtAuthentication如何处理kid(实际上是来自Google的kid-key id)

在vanilla PHP中,我必须从google获得秘密,然后在使用它之前将其拆分为数组。然而,这一切都是图波拉内部完成的,这导致了我的问题

Slim 4使用Firebase Auth的正确中间件如下所示:

返回函数(App$App){
$app->add(CorsMiddleware::class);
$container=$app->getContainer();
$rawPublicKeys=file\u get\u contents('https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com');
$keys=json_decode($rawPublicKeys,true);
$app->add(新建Tuupola\Middleware\JWT身份验证)([
“忽略”=>[“/api/records/countries”、“/FAQ”、“/”、“/answer”],
“算法”=>[“RS256”],
“标题”=>“X-授权”,
“regexp”=>“/Bearer\s+(.*)$/i”,
“机密”=>$keys,
“安全”=>错误
}
]));
};

您没有提供足够的信息。你说的$secrets是什么意思。。。“我相信你指的是密钥?你是否在客户端使用firebase javascript sdk登录用户,然后在服务器端代码中检查令牌?这是一个使用Slim 4作为后端的移动应用程序使用的。用户使用其firebase凭据登录应用程序,然后在后端使用其令牌以允许访问Rest API。