使用Firebase-PHP验证Firebase ID令牌

时间:2018-02-13 07:12:17

标签: php firebase firebase-authentication token

我正在使用Firebase-Auth在我用PHP编写的网络应用上授权用户。授权本身是使用Javascript进行的,它是在Ajax-Request上执行的,用于验证用户是否已登录。

要在我已实施Firebase-PHP的服务器上使用Firebase-Admin。

在每个AJX-Request上,我现在都获得登录的用户ID和ID令牌,我想在PHP中验证它,就像在文档中写了here一样。

验证本身运行正常。如果令牌存在,我得到一个" IDToken" -Object。但是,如何再次从该对象中获取userID以验证该令牌对于该用户是否正确呢?

$idTokenString = '...';

try {
    $verifiedIdToken = $firebase->getAuth()->verifyIdToken($idTokenString);
    // This is the Token-Object where I cant't find the uid-get-Function
} catch (InvalidIdToken $e) {
    echo $e->getMessage();
}

我无法在文档或我搜索的类中找到方法。

1 个答案:

答案 0 :(得分:1)

图书馆的维护者 - 文档确实遗漏了这些信息,但它现在已经包含在内并且整个页面都已经过大修:

https://firebase-php.readthedocs.io/en/latest/authentication.html#verify-a-firebase-id-token

您可以从ID令牌的sub声明中检索UID:

try {
    $verifiedIdToken = $firebase->getAuth()->verifyIdToken($idToken);
} catch (InvalidToken $e) {
    echo $e->getMessage();
}

$uid = $verifiedIdToken->getClaim('sub');
$user = $firebase->getAuth()->getUser($uid);