Skip to content
Advertisement

Unable to get the user form kreait/firebase-php using $auth->getUser($uid);

I have my PHP code which looks like,

use KreaitFirebaseFactory;
use KreaitFirebaseServiceAccount;
use FirebaseAuthTokenExceptionInvalidToken;
use KreaitFirebaseAuth;


$serviceAccount = ServiceAccount::fromJsonFile(APP_ROOT_MAIN.'/path/to/service/ac.json'); 

$factory = (new Factory)
->withServiceAccount($serviceAccount);

$auth = $factory->createAuth();

try {
    $verifiedIdToken = $auth->verifyIdToken($token);
} catch (Exception $e) {
    echo "Failed"
}

$uid = $verifiedIdToken->getClaim('sub');
echo $uid;
$user = $auth->getUser($uid);
print_r($user);

With the help of the above code, I am able to get the UID of the user but the output for the print_r($user) looks like,

    KreaitFirebaseAuthUser Object
(
    [idToken:KreaitFirebaseAuthUser:private] => LcobucciJWTToken Object
        (
            [headers:LcobucciJWTToken:private] => Array
                (
                    [alg] => RS256
                    [kid] => jhjkhk90pi9po;jmklkl
                    [typ] => JWT
                )

            [claims:LcobucciJWTToken:private] => Array
                (
                    [name] => LcobucciJWTClaimBasic Object
                        (
                            [name:LcobucciJWTClaimBasic:private] => name
                            [value:LcobucciJWTClaimBasic:private] => Sachin Kekarjawalekar
                        )

                    [picture] => LcobucciJWTClaimBasic Object
                        (
                            [name:LcobucciJWTClaimBasic:private] => picture
                            [value:LcobucciJWTClaimBasic:private] => https://lh3.googleusercontent.com/a-/AAuE7mC3to6_ClEkU
                        )

                    [iss] => LcobucciJWTClaimEqualsTo Object
                        (
                            [name:LcobucciJWTClaimBasic:private] => iss
                            [value:LcobucciJWTClaimBasic:private] => https://securetoken.google.com/-sachin
                        )

                    [aud] => LcobucciJWTClaimEqualsTo Object
                        (
                            [name:LcobucciJWTClaimBasic:private] => aud
                            [value:LcobucciJWTClaimBasic:private] => sachin
                        )

                    [auth_time] => LcobucciJWTClaimBasic Object
                        (
                            [name:LcobucciJWTClaimBasic:private] => auth_time
                            [value:LcobucciJWTClaimBasic:private] => 1574274974
                        )

                    [user_id] => LcobucciJWTClaimBasic Object
                        (
                            [name:LcobucciJWTClaimBasic:private] => user_id
                            [value:LcobucciJWTClaimBasic:private] => some_user_ud
                        )

                    [sub] => LcobucciJWTClaimEqualsTo Object
                        (
                            [name:LcobucciJWTClaimBasic:private] => sub
                            [value:LcobucciJWTClaimBasic:private] => some_user_ud
                        )

                    [iat] => LcobucciJWTClaimLesserOrEqualsTo Object
                        (
                            [name:LcobucciJWTClaimBasic:private] => iat
                            [value:LcobucciJWTClaimBasic:private] => 1574274974
                        )

                    [exp] => LcobucciJWTClaimGreaterOrEqualsTo Object
                        (
                            [name:LcobucciJWTClaimBasic:private] => exp
                            [value:LcobucciJWTClaimBasic:private] => 1574278574
                        )

                    [email] => LcobucciJWTClaimBasic Object
                        (
                            [name:LcobucciJWTClaimBasic:private] => email
                            [value:LcobucciJWTClaimBasic:private] => someemail@gmail.com
                        )

                    [email_verified] => LcobucciJWTClaimBasic Object
                        (
                            [name:LcobucciJWTClaimBasic:private] => email_verified
                            [value:LcobucciJWTClaimBasic:private] => 1
                        )

                    [firebase] => LcobucciJWTClaimBasic Object
                        (
                            [name:LcobucciJWTClaimBasic:private] => firebase
                            [value:LcobucciJWTClaimBasic:private] => stdClass Object
                                (
                                    [identities] => stdClass Object
                                        (
                                            [email] => Array
                                                (
                                                    [0] =>someemail@email.com
                                                )

                                        )

                                    [sign_in_provider] => custom
                                )

                        )

                )

How can I get print the $user in this format?

{
"uid": "jEazVdPDhqec0tnEOG7vM5wbDyU2",
"email": "user@domain.tld",
"emailVerified": true,
"displayName": null,
"photoUrl": null,
"phoneNumber": null,
"disabled": false,
"metadata": {
    "createdAt": "2018-02-14T15:41:32+00:00",
    "lastLoginAt": "2018-02-14T15:41:32+00:00"
},
"providerData": [
    {
        "uid": "user@domain.tld",
        "displayName": null,
        "email": "user@domain.tld",
        "photoUrl": null,
        "providerId": "password",
        "phoneNumber": null
    }
],
"passwordHash": "UkVEQUNURUQ=",


 "customClaims": null,
    "tokensValidAfterTime": "2018-02-14T15:41:32+00:00"
}

I need to get the email Id and other details of the user from using the function $auth->getUser(‘some-uid’); but I am unable to get the expected output with the above type of format, I am getting an object of the class as an output. Please refer: https://firebase-php.readthedocs.io/en/stable/user-management.html#user-records

Advertisement

Answer

you can get the output by using json_encode():

$output = json_encode($user, JSON_PRETTY_PRINT);

If you want to access the individual properties of the user record, you can use the UserRecord object directly and access (see https://github.com/kreait/firebase-php/blob/master/src/Firebase/Auth/UserRecord.php)

Please make sure to use the latest release of the SDK – the KreaitAuthUser object that your print_r() shows, doesn’t exist in the currently maintained 4.x releases, what should be returned is a UserRecord object.

User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement