Как сохранить данные входа в систему Google OAuth в базе данных MySQLMySql

Форум по Mysql
Ответить
Anonymous
 Как сохранить данные входа в систему Google OAuth в базе данных MySQL

Сообщение Anonymous »

Я внедряю аутентификацию Google OAuth в своем приложении PHP, но данные профиля пользователя не вставляются в мою базу данных MySQL. Процесс аутентификации работает правильно, и я могу извлечь пользовательские данные из Google, но вставка в базу данных не удается молча. < /P>
// init configuration
$clientID = 'YOUR_CLIENT_ID';
$clientSecret = 'YOUR_CLIENT_SECRET';
$redirectUri = 'http://localhost/shop/home.php';

$client = new Google_Client();
$client->setClientId($clientID);
$client->setClientSecret($clientSecret);
$client->setRedirectUri($redirectUri);
$client->addScope("email");
$client->addScope("profile");

if (isset($_GET['code'])) {
$token = $client->fetchAccessTokenWithAuthCode($_GET['code']);

if (!isset($token['error'])) {
$client->setAccessToken($token['access_token']);

$google_oauth = new Google_Service_Oauth2($client);
$google_account_info = $google_oauth->userinfo->get();

$email = $google_account_info->email;
$fname = $google_account_info->givenName;
$lname = $google_account_info->familyName;
$password = password_hash($google_account_info->id, PASSWORD_BCRYPT);

// check if user exists
$stmt = $conn->prepare("SELECT id, fname, lname, email FROM users WHERE email = ?");
$stmt->bind_param("s", $email);
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows > 0) {
// user exists
$user = $result->fetch_assoc();
$_SESSION['user_id'] = $user['id'];
$_SESSION['name'] = $user['fname'] . " " . $user['lname'];
$_SESSION['email'] = $user['email'];
} else {
// insert new user
$stmt = $conn->prepare("INSERT INTO users (fname, lname, email, mobile, password, status_status_id, gender_id)
VALUES (?, ?, ?, ?, ?, ?, ?)");
$mobile = "0712345678";
$status = 4;
$gender = 1;
$stmt->bind_param("ssssssi", $fname, $lname, $email, $mobile, $password, $status, $gender);

if ($stmt->execute()) {
$userId = $stmt->insert_id;
$_SESSION['user_id'] = $userId;
$_SESSION['name'] = $fname . " " . $lname;
$_SESSION['email'] = $email;
} else {
die("Insert failed: " . $stmt->error);
}
}

header("Location: home.php");
exit;
} else {
die("Error fetching token: " . $token['error']);
}
}
< /code>
Поток OAuth успешно завершается, и я вижу, что Google правильно возвращает пользовательские данные. Однако, когда новый пользователь пытается войти в систему, данные не вставляются в базу данных. Сценарий не бросает никаких ошибок, и он перенаправляет на home.php, но запись пользователя не создана.

Подробнее здесь: https://stackoverflow.com/questions/797 ... l-database
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»