Я использую торт 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");
})