Google Authentication - заставить его работать с 2 кнопками и с 1 кнопкой на cakephp - PullRequest
0 голосов
/ 16 января 2020

Я использую торт php, чтобы создать регистр аутентификации Google. Мне удалось заставить его работать, и мне удалось получить всю информацию о пользователе (имя, фамилию и адрес электронной почты из аутентифицированной информации о пользователе), сохранить ее в скрытых значениях и передать с помощью торта php в базу данных. Однако мне удалось сделать это с 2 кнопками. Первая кнопка вызывает кнопку (используя javascript), которая аутентифицирует учетную запись Google и присваивает значения (имя, фамилию и адрес электронной почты) скрытым формам ввода, а вторая кнопка - это кнопка $ this-> Form->, который добавляет пользователя со всей его информацией в базу данных ..

Теперь, конечно, это неправильно, как обычно, у вас просто будет 1 кнопка, которая регистрирует вас и затем регистрирует вас (или регистрирует вас) если вы уже зарегистрированы ранее). Поэтому я попытался сделать кнопку формы с помощью onclick = "googleAuthentication", но он продолжал выполнять аутентификацию и пытался зарегистрировать пользователя без значений (он не назначал значения скрытым полям). Что я могу сделать, чтобы решить эту проблему? Я хочу как-то добавить форму в метод googleAuthentication, если это возможно ..

Это код для версии с 2 кнопками, который отлично работает:

Форма с использованием торта php :

echo $this->Form->create($user);
    echo $this->Form->hidden('first_name', ['id' => 'nameInput'], ['value' => '']);
    echo $this->Form->hidden('last_name', ['id' => 'surnameInput'], ['value' => '']);
    echo $this->Form->hidden('email', ['id' => 'emailInput'], ['value' => '']);
    echo $this->Form->hidden('role_id', ['value' => '2']);
    echo $this->Form->hidden('password', ['value' => 'N/A']);

Кнопка, вызывающая метод для проверки подлинности Google:

<button type="button" class="btn btn-warning col-md-12" onclick="googleSignIn()">Google Authenticate</button>

Метод проверки подлинности:

function googleSignIn(){
    var provider = new firebase.auth.GoogleAuthProvider();
    firebase.auth().signInWithPopup(provider).then(function(result){
        var user = result.user;
        var fullName = user.displayName;

        var index = fullName.indexOf(" ");
        var name = fullName.substr(0, index);
        var surname = fullName.substr(index + 1);
        var email = user.email;

        document.getElementById('nameInput').value = name;
        document.getElementById('surnameInput').value = surname;
        document.getElementById('emailInput').value = email;
        console.log("Success Google Account Linked");

    }).catch(function(err){
        console.log(err);
        console.log("Failed to do");
    })

1 Ответ

0 голосов
/ 16 января 2020

Можно ли добавить команду javascript для запуска действия нажатия другой кнопки (или просто отправить заполненную форму)?

Или есть ли причина, по которой пользователю необходимо просмотреть форму перед отправкой?

function googleSignIn(){
    var provider = new firebase.auth.GoogleAuthProvider();
    firebase.auth().signInWithPopup(provider).then(function(result){
        var user = result.user;
        var fullName = user.displayName;

        var index = fullName.indexOf(" ");
        var name = fullName.substr(0, index);
        var surname = fullName.substr(index + 1);
        var email = user.email;

        document.getElementById('nameInput').value = name;
        document.getElementById('surnameInput').value = surname;
        document.getElementById('emailInput').value = email;
        console.log("Success Google Account Linked");

        document.getElementById('userSubmitButton).click();

    }).catch(function(err){
        console.log(err);
        console.log("Failed to do");
    })

Дон Дрейк

...