Current File : //proc/self/root/home/bitrix/www/local/php_interface/lib/vendor/kreait/firebase-tokens/README.md
# Firebase Tokens
[](https://packagist.org/packages/kreait/firebase-tokens)
[](https://packagist.org/packages/kreait/firebase-tokens)
[](https://travis-ci.org/kreait/firebase-tokens-php)
[](https://scrutinizer-ci.com/g/kreait/firebase-tokens-php/?branch=master)
[](https://scrutinizer-ci.com/g/kreait/firebase-tokens-php/?branch=master)
A library to work with [Google Firebase](https://firebase.google.com) tokens. You can use it to
[create custom tokens](https://firebase.google.com/docs/auth/admin/create-custom-tokens) and
[verify ID Tokens](https://firebase.google.com/docs/auth/admin/verify-id-tokens).
Achieve more with the [Firebase Admin SDK](https://github.com/kreait/firebase-php) for PHP (which uses this library).
## Installation
```
composer require kreait/firebase-tokens
```
## Create a custom token
```php
use Firebase\Auth\Token\Generator;
$generator = new Generator($clientEmail, $privateKey);
$uid = 'a-uid';
$claims = ['foo' => 'bar'];
$token = $generator->createCustomToken($uid, $claims); // Returns a Lcobucci\JWT\Token instance
echo $token;
```
## Verify an ID token
```php
use Firebase\Auth\Token\Verifier;
$verifier = new Verifier($projectId);
try {
$verifiedIdToken = $verifier->verifyIdToken($idToken);
echo $verifiedIdToken->getClaim('sub'); // "a-uid"
} catch (\Firebase\Auth\Token\Exception\ExpiredToken $e) {
echo $e->getMessage();
} catch (\Firebase\Auth\Token\Exception\IssuedInTheFuture $e) {
echo $e->getMessage();
} catch (\Firebase\Auth\Token\Exception\InvalidToken $e) {
echo $e->getMessage();
}
```
### Cache results from the Google Secure Token Store
In order to verify ID tokens, the verifier makes a call to fetch Firebase's currently available public
keys. The keys are cached in memory by default.
If you want to cache the public keys more effectively, you can use any [implementation of
psr/simple-cache](https://packagist.org/providers/psr/simple-cache-implementation).
Example using the [Symfony Cache Component](https://symfony.com/doc/current/components/cache.html)
```php
use Firebase\Auth\Token\HttpKeyStore;
use Firebase\Auth\Token\Verifier;
use Symfony\Component\Cache\Simple\FilesystemCache;
$cache = new FilesystemCache();
$keyStore = new HttpKeyStore(null, $cache);
$verifier = new Verifier($projectId, $keyStore);
```