繁体   English   中英

无法使用 $auth->getUser($uid) 获取用户表单 kreait/firebase-php;

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

我的 PHP 代码看起来像,

use Kreait\Firebase\Factory;
use Kreait\Firebase\ServiceAccount;
use Firebase\Auth\Token\Exception\InvalidToken;
use Kreait\Firebase\Auth;


$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);

在上面的代码的帮助下,我可以获得用户的 UID,但是 print_r($user) 的 output 看起来像,

    Kreait\Firebase\Auth\User Object
(
    [idToken:Kreait\Firebase\Auth\User:private] => Lcobucci\JWT\Token Object
        (
            [headers:Lcobucci\JWT\Token:private] => Array
                (
                    [alg] => RS256
                    [kid] => jhjkhk90pi9po;jmklkl
                    [typ] => JWT
                )

            [claims:Lcobucci\JWT\Token:private] => Array
                (
                    [name] => Lcobucci\JWT\Claim\Basic Object
                        (
                            [name:Lcobucci\JWT\Claim\Basic:private] => name
                            [value:Lcobucci\JWT\Claim\Basic:private] => Sachin Kekarjawalekar
                        )

                    [picture] => Lcobucci\JWT\Claim\Basic Object
                        (
                            [name:Lcobucci\JWT\Claim\Basic:private] => picture
                            [value:Lcobucci\JWT\Claim\Basic:private] => https://lh3.googleusercontent.com/a-/AAuE7mC3to6_ClEkU
                        )

                    [iss] => Lcobucci\JWT\Claim\EqualsTo Object
                        (
                            [name:Lcobucci\JWT\Claim\Basic:private] => iss
                            [value:Lcobucci\JWT\Claim\Basic:private] => https://securetoken.google.com/-sachin
                        )

                    [aud] => Lcobucci\JWT\Claim\EqualsTo Object
                        (
                            [name:Lcobucci\JWT\Claim\Basic:private] => aud
                            [value:Lcobucci\JWT\Claim\Basic:private] => sachin
                        )

                    [auth_time] => Lcobucci\JWT\Claim\Basic Object
                        (
                            [name:Lcobucci\JWT\Claim\Basic:private] => auth_time
                            [value:Lcobucci\JWT\Claim\Basic:private] => 1574274974
                        )

                    [user_id] => Lcobucci\JWT\Claim\Basic Object
                        (
                            [name:Lcobucci\JWT\Claim\Basic:private] => user_id
                            [value:Lcobucci\JWT\Claim\Basic:private] => some_user_ud
                        )

                    [sub] => Lcobucci\JWT\Claim\EqualsTo Object
                        (
                            [name:Lcobucci\JWT\Claim\Basic:private] => sub
                            [value:Lcobucci\JWT\Claim\Basic:private] => some_user_ud
                        )

                    [iat] => Lcobucci\JWT\Claim\LesserOrEqualsTo Object
                        (
                            [name:Lcobucci\JWT\Claim\Basic:private] => iat
                            [value:Lcobucci\JWT\Claim\Basic:private] => 1574274974
                        )

                    [exp] => Lcobucci\JWT\Claim\GreaterOrEqualsTo Object
                        (
                            [name:Lcobucci\JWT\Claim\Basic:private] => exp
                            [value:Lcobucci\JWT\Claim\Basic:private] => 1574278574
                        )

                    [email] => Lcobucci\JWT\Claim\Basic Object
                        (
                            [name:Lcobucci\JWT\Claim\Basic:private] => email
                            [value:Lcobucci\JWT\Claim\Basic:private] => someemail@gmail.com
                        )

                    [email_verified] => Lcobucci\JWT\Claim\Basic Object
                        (
                            [name:Lcobucci\JWT\Claim\Basic:private] => email_verified
                            [value:Lcobucci\JWT\Claim\Basic:private] => 1
                        )

                    [firebase] => Lcobucci\JWT\Claim\Basic Object
                        (
                            [name:Lcobucci\JWT\Claim\Basic:private] => firebase
                            [value:Lcobucci\JWT\Claim\Basic:private] => stdClass Object
                                (
                                    [identities] => stdClass Object
                                        (
                                            [email] => Array
                                                (
                                                    [0] =>someemail@email.com
                                                )

                                        )

                                    [sign_in_provider] => custom
                                )

                        )

                )

如何以这种格式打印 $user?

{
"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"
}

我需要使用 function $auth->getUser('some-uid'); 获取 email Id 和用户的其他详细信息但我无法使用上述类型的格式获得预期的 output,我得到的是 class 的 object 作为 Z71456DZ1F638913。 请参考: https://firebase-php.readthedocs.io/en/stable/user-management.html#user-records

您可以使用json_encode()获得 output :

$output = json_encode($user, \JSON_PRETTY_PRINT);

如果要访问用户记录的各个属性,可以直接使用UserRecord object 并访问(参见https://github.com/kreait/firebase-php/blob/master/src/Firebase/Auth/UserRecord. php )

请确保使用最新版本的 SDK - 您的print_r()显示的Kreait\Auth\User object,在当前维护的 4.x 版本中不存在,应该返回的是UserRecord ZA86696331AC4BEB26

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM