为什么我在使用 firebase php^5.14.1 时会收到此错误
<块引用>致命错误:未捕获的 GuzzleHttp\Exception\ClientException:客户端错误:POST https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser
导致 403 Forbidden
响应:(截断...)在 C:\xampp\htdocs\mcns\admin\includes \vendor\guzzlehttp\guzzle\src\Exception\RequestException.php:113 堆栈跟踪:#0 C:\xampp\htdocs\mcns\admin\includes\vendor\guzzlehttp\guzzle\src\Middleware.php(69): GuzzleHttp \Exception\RequestException::create(Object(GuzzleHttp\Psr7\Request), Object(GuzzleHttp\Psr7\Response), NULL, Array, NULL) #1 C:\xampp\htdocs\mcns\admin\includes\vendor\guzzlehttp \promises\src\Promise.php(204): GuzzleHttp\Middleware::GuzzleHttp{closure}(Object(GuzzleHttp\Psr7\Response)) #2 C:\xampp\htdocs\mcns\admin\includes\vendor\guzzlehttp\ promises\src\Promise.php(153): GuzzleHttp\Promise\Promise::callHandler(1, Object(GuzzleHttp\Psr7\Response), NULL) #3 C:\xampp\htdocs\mcns\admin\includes\vendor\ guzzlehttp\promises\src\TaskQueue.php(48): GuzzleHttp\Promise\Promise::GuzzleHttp\Promise{closure}() #4 C:\xampp\htdocs\mcns\admin\includes\vendor\guzzleh ttp\promises\src\Promise.php(248): GuzzleHttp\Promise\TaskQueue->run(true) #5 C:\xampp\htdocs\mcns\admin\includes\vendor\guzzlehttp\promises\src\Promise.php (224): GuzzleHttp\Promise\Promise->invokeWaitFn() #6 C:\xampp\htdocs\mcns\admin\includes\vendor\guzzlehttp\promises\src\Promise.php(269): GuzzleHttp\Promise\Promise- >waitIfPending() #7 C:\xampp\htdocs\mcns\admin\includes\vendor\guzzlehttp\promises\src\Promise.php(226): GuzzleHttp\Promise\Promise->invokeWaitList() #8 C:\xampp \htdocs\mcns\admin\includes\vendor\guzzlehttp\promises\src\Promise.php(62): GuzzleHttp\Promise\Promise->waitIfPending() #9 C:\xampp\htdocs\mcns\admin\includes\vendor \guzzlehttp\guzzle\src\Client.php(187): GuzzleHttp\Promise\Promise->wait() #10 C:\xampp\htdocs\mcns\admin\includes\vendor\kreait\firebase-php\src\Firebase \Http\WrappedGuzzleClient.php(50): GuzzleHttp\Client->request('POST', 'signupNewUser', Array) #11 C:\xampp\htdocs\mcns\admin\includes\vendor\kreait\firebase-php\ src\Firebase\Auth\ApiClient.php(219): Kreait\Firebase\Auth\ApiClient->request('POST', 'signupNewUser', Array) #12 C:\xampp\htdocs\mcns\admin\includes\vendor\kreait\firebase-php\src\Firebase\Auth\ ApiClient.php(51): Kreait\Firebase\Auth\ApiClient->requestApi('signupNewUser', Array) #13 C:\xampp\htdocs\mcns\admin\includes\vendor\kreait\firebase-php\src\Firebase \Auth.php(183): Kreait\Firebase\Auth\ApiClient->createUser(Object(Kreait\Firebase\Request\CreateUser)) #14 C:\xampp\htdocs\mcns\admin\accountmukera.php(40): Kreait\Firebase\Auth->createUser(Array) #15 {main} Next Kreait\Firebase\Exception\Auth\AuthError:请求缺少有效的 API 密钥。在 C:\xampp\htdocs\mcns\admin\includes\vendor\kreait\firebase-php\src\Firebase\Exception\AuthApiExceptionConverter.php:134 堆栈跟踪:#0 C:\xampp\htdocs\mcns\admin\includes \vendor\kreait\firebase-php\src\Firebase\Exception\AuthApiExceptionConverter.php(50): Kreait\Firebase\Exception\AuthApiExceptionConverter->convertGuzzleRequestException(Object(GuzzleHttp\Exception\ClientException)) #1 C:\xampp\htdocs \mcns\admin\includes\vendor\kreait\firebase-php\src\Firebase\Auth\ApiClient.php(221): Kreait\Firebase\Exception\AuthApiExceptionConverter->convertException(Object(GuzzleHttp\Exception\ClientException)) #2 C:\xampp\htdocs\mcns\admin\includes\vendor\kreait\firebase-php\src\Firebase\Auth\ApiClient.php(51): Kreait\Firebase\Auth\ApiClient->requestApi('signupNewUser', Array ) #3 C:\xampp\htdocs\mcns\admin\includes\vendor\kreait\firebase-php\src\Firebase\Auth.php(183): Kreait\Firebase\Auth\ApiClient->createUser(Object(Kreait\ Firebase\Request\CreateUser)) #4 C:\xampp\htdocs\mcns\admin\accountmuk era.php(40): Kreait\Firebase\Auth->createUser(Array) #5 {main} 扔在 C:\xampp\htdocs\mcns\admin\includes\vendor\kreait\firebase-php\src\Firebase\ Exception\AuthApiExceptionConverter.php 第 134 行
//the code is
<?php
session_start();
//error_reporting(0);
require_once'./includes/vendor/autoload.php';
use Kreait\Firebase\Factory;
use Kreait\Firebase\ServiceAccount;
//use Kreait\Firebase\Auth;
$factory = (new Factory)->withServiceAccount(__DIR__.'/includes/secret/mcnsweb-ea923-firebase-adminsdk-40vau-468af8bd71.json');
$factory = (new Factory())
->withDatabaseUri('https://mcnsweb-ea923-default-rtdb.firebaseio.com/');
$database = $factory->createDatabase();
//include('includes/topheader.php');
//include('includes/leftsidebar.php');
//$reference = $database->getReference('users');
//$value = $reference->getValue();
//if($value>0){
$auth = $factory->createAuth();
$userProperties = [
'email' => 'sosi@gmail.com',
'emailVerified' => false,
'phoneNumber' => '+15555550100',
'password' => "123456",
'firstname' => "meron",
'lastname' => "tesfaye",
// 'displayName' => 'John Doe',
// 'usertype'=> "department head",
// 'imageUrl'=> upload(),
'photoUrl' => 'http://www.example.com/12345678/photo.png',
'disabled' => false,
];
$createdUser = $auth->createUser($userProperties);
// $database->getReference('users')->set('useraccount');
// $pushdata= $database->getReference('useraccount')->push($userProperties);
if($createdUser){
echo "seccessful";
}
?>
答案 0 :(得分:0)
简而言之,您试图在未事先登录的情况下访问数据库/创建用户。
这一行正在创建一个使用给定服务帐户并将其保存为 $factory
的工厂。
$factory = (new Factory)->withServiceAccount(__DIR__.'/includes/secret/mcnsweb-ea923-firebase-adminsdk-40vau-468af8bd71.json');
这一行正在创建一个不同的工厂并将其保存为 $factory
。
$factory = (new Factory())
->withDatabaseUri('https://mcnsweb-ea923-default-rtdb.firebaseio.com/');
你需要将这两个语句组合成:
$factory = (new Factory())
->withServiceAccount(__DIR__.'/includes/secret/mcnsweb-ea923-firebase-adminsdk-40vau-468af8bd71.json');
->withDatabaseUri('https://mcnsweb-ea923-default-rtdb.firebaseio.com/');