我正在使用此SDK并遵循此documentation。现在我正在尝试在firebase db中创建和验证用户。我怎么能这样做。我在Codeigniter做项目,在我的控制器中我做了这个:
public function register()
{
$firebase = (new Firebase\Factory())->create();
$tokenHandler = $firebase->getTokenHandler();
$uid = 'a-uid';
$claims = ['foo' => 'bar']; // optional
// Returns a Lcobucci\JWT\Token instance
$customToken = $tokenHandler->createCustomToken($uid, $claims);
echo $customToken; // "eyJ0eXAiOiJKV1..."
$idTokenString = 'eyJhbGciOiJSUzI1...';
// Returns a Lcobucci\JWT\Token instance
$idToken = $tokenHandler->verifyIdToken($idTokenString);
$uid = $idToken->getClaim('sub');
echo $uid; // 'a-uid'
}
我调用了函数它给了我这个错误:
Type: Kreait\Firebase\Exception\ServiceAccountDiscoveryFailed
Message: Kreait\Firebase\ServiceAccount\Discovery\FromEnvironmentVariable: The environment variable "FIREBASE_CREDENTIALS" is not set. Kreait\Firebase\ServiceAccount\Discovery\FromEnvironmentVariable: The environment variable "GOOGLE_APPLICATION_CREDENTIALS" is not set. Kreait\Firebase\ServiceAccount\Discovery\FromGoogleWellKnownFile: The well known file is not readable or invalid
Filename: E:\xampp\htdocs\firebasedb\vendor\kreait\firebase-
php\src\Firebase\ServiceAccount\Discoverer.php
Line Number: 48
任何人都可以帮我解决这个问题吗?任何形式的帮助表示赞赏。感谢。
修改 好吧,我用这样的默认.json文件路径解决了这个问题:
$serviceAccount = ServiceAccount::fromJsonFile(JSON_FILE_PATH.'google-service-account.json');
$firebase = (new Factory)
->withServiceAccount($serviceAccount)
->create();
现在可以从网络应用注册新用户吗?任何人都可以帮忙。我一直在这个问题上停止了。非常感谢帮助。
答案 0 :(得分:1)
您设置了JSON密钥环境变量 FIREBASE_CREDENTIALS GOOGLE_APPLICATION_CREDENTIALS ?
答案 1 :(得分:0)
摘自文档https://firebase-php.readthedocs.io/en/latest/authentication.html#authenticate-with-admin-privileges
有两个要注意的要点。
关于用户: 来自https://firebase.google.com/docs/auth/users/#auth_tokens 你有一个样本
$request = \Kreait\Auth\Request\CreateUser::new()
->withUnverifiedEmail('user@example.com')
->withPhoneNumber('+15555550100')
->withClearTextPassword('secretPassword')
->withDisplayName('John Doe')
->withPhotoUrl('http://www.example.com/12345678/photo.png');
$createdUser = $auth->createUser($request);
请注意:
默认情况下,Firebase身份验证将为新用户生成一个随机uid。如果您想为新用户指定自己的uid,则可以在传递给用户创建方法的属性中进行添加:
$properties = [
'uid' => 'some-uid',
// other properties
];
$request = \Kreait\Auth\Request\CreateUser::new()
->withUid('some-uid')
// with other properties
;
答案 2 :(得分:0)
在我的情况下,我遇到了 Laravel 的相同问题,这是解决方案:
首先将您从Firebase项目获得的.json
凭据文件保存到与.env
文件相同级别的Laravel应用的根目录中。
json
文件看起来像you-file-firebase-adminsdk-0000-9845985498a.json
然后打开.env
文件并创建一个新的环境变量,然后粘贴json
凭据文件名。
FIREBASE_CREDENTIALS=../you-file-firebase-adminsdk-0000-9845985498a.json