[英]Undefined class constant 'VERSION' when using 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.