我有一个 PHP 应用程序,我正在尝试生成一个令牌来对用户进行身份验证,以便他们可以从浏览器访问 Firebase。
我已经从 Firebase 控制台中的服务帐户生成了一个私钥,并使用了 firebase/php-jwt 库。尝试使用signInWithCustomTokenjavascript 中的方法访问时,我总是收到错误>
自定义令牌格式不正确。请参阅文档
我生成令牌的代码是:
use Firebase\JWT\JWT; require_once("php-jwt-master/src/JWT.php"); $service_account_email = "firebase-adminsdk-ierut@......iam.gserviceaccount.com"; // Dots are app name $key = "-----BEGIN PRIVATE KEY-----\n..........\n-----END PRIVATE KEY-----\n"; // Dots are private key from the downloaded file $time = time(); $token = array( 'iat' => $time, 'exp' => $time + 3000, 'uid' => '1', 'aud' => 'https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit', 'iss' => $service_account_email, 'sub' => $service_account_email ); $jwt = JWT::encode($token, $key, 'HS256');
javascript代码是:
function login(){ var token = document.getElementById("token").value; firebase.auth().signInWithCustomToken(token) .then((user) => { console.log("Autenticado"); }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; console.log(errorCode + " - " + errorMessage); }); }
我已经用 jwt.io 工具检查了 jwt,它似乎是正确的。
我不确定密钥格式,我试过在文件中将标题和“\ n”放在一行中,也没有“\ n”,并在多行变量中使用“<<< ”。
我还尝试使用带有或不带有参数“HS256”的编码功能。但我总是得到同样的错误。
提前感谢您的任何回复。