Uncaught Error: вызов неопределенного метода Kreait - PullRequest
0 голосов
/ 25 февраля 2020

Я только что создал php веб-сервер и подключил его к firebase. когда я пробовал аутентификацию, регистрация работает просто отлично. но проблема в входе в систему. Он продолжает получать эту ошибку:

Неустранимая ошибка: необученная ошибка: вызов неопределенного метода Kreait \ Firebase \ Auth :: signInWithEmailAndPassword () в / Applications / XAMPP / xamppfiles /htdocs/firebase_series/authActions.php:24 Трассировка стека: брошено # 0 {main} в /Applications/XAMPP/xamppfiles/htdocs/firebase_series/authActions.php в строке 24

вот мой код аутентификации:

<?php
include("includes/db.php");


if(isset($_POST['signup']))
{

    $email = $_POST['emailSignup'];
    $pass = $_POST['passSignup'];

    $auth = $firebase->getAuth();
    $user = $auth->createUserWithEmailAndPassword($email,$pass);
    header("Location:index.php");
}

else
{

    $email = $_POST['emailSignin'];
    $pass = $_POST['passSignin'];

    $auth = $firebase->getAuth();
    $user = $auth->getUserWithEmailAndPassword($email,$pass);
    if($user)
    {
        session_start();
        $_SESSION['user'] = true;
        header("Location:home.php");
    }


}

?>

и вот мой код подключения к базе данных:


<?php

require __DIR__.'/vendor/autoload.php';

use Kreait\Firebase\Factory;
use Kreait\Firebase\ServiceAccount;
use Kreait\Firebase\Auth;

// This assumes that you have placed the Firebase credentials in the same directory
// as this PHP file.
$serviceAccount = ServiceAccount::fromJsonFile(__DIR__.'/google-service-account.json');
$apiKey = 'AIzaSyCHULFKW6Kl7FXZc3ZUTYL8fq0f90-kAJ0';

$firebase = (new Factory)
    ->withServiceAccount($serviceAccount, $apiKey)
    // The following line is optional if the project id in your credentials file
    // is identical to the subdomain of your Firebase project. If you need it,
    // make sure to replace the URL with the URL of your project.
    ->withDatabaseUri('https://phpserver-f35e3.firebaseio.com/')
    ->create();

$database = $firebase->getDatabase();


?>

1 Ответ

1 голос
/ 27 февраля 2020

? Я поддерживаю SDK ( kreait / firebase- php), который вы используете:)

Ваша ошибка говорит

Call to undefined method Kreait\Firebase\Auth::signInWithEmailAndPassword()

но я не вижу этот метод в вашем коде. Метод с именем signInWithEmailAndPassword() также не существует, и вы используете методы для инициализации SDK, который уже давно устарел - пожалуйста, убедитесь, что вы используете последнюю версию SDK (4.40 на тот момент этого комментария).

Как только вы это сделаете, у вас будет доступ к методу Auth::verifyPassword($email, $password).

Ваш код может выглядеть следующим образом:

<?php
// includes/db.php

require __DIR__.'/vendor/autoload.php';

use Kreait\Firebase\Factory;

$factory = (new Factory())->withServiceAccount(__DIR__.'/google-service-account.json');

$auth = $factory->createAuth();
// no closing "?>"
<?php
include("includes/db.php");

// Have a look at https://www.php.net/filter_input to filter user input

if (isset($_POST['signup'])) {
    $email = $_POST['emailSignup'];
    $pass = $_POST['passSignup'];

    $user = $auth->createUserWithEmailAndPassword($email,$pass);

    header("Location:index.php");
    exit;
}

$email = $_POST['emailSignin'];
$pass = $_POST['passSignin'];

if ($email && $pass && $user = $auth->verifyPassword($email, $pass)) {
    session_start();

    $_SESSION['firebase_user_id'] = $user->id;

    header("Location:home.php");
    exit;
}

echo "Authentication failed";

Если у вас есть дополнительные вопросы относительно SDK, я хотел бы пригласить вас в сообщество Discord, посвященное SDK .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...