Я внедряю аутентификацию 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
Как сохранить данные входа в систему Google OAuth в базе данных MySQL ⇐ MySql
Форум по Mysql
1756170793
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, но запись пользователя не создана.
Подробнее здесь: [url]https://stackoverflow.com/questions/79746329/how-to-save-google-oauth-user-login-data-to-mysql-database[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия