Знали ли Вы, что используя Google, можно сделать на своем сайте регистрацию на сайте в один клик? Каждый, у кого есть аккаунт в Google, может просто нажать на кнопку, а скрипт автоматически загрузит в приложение e-mail, имя и фотографию.
Используя этот вариант входа/регистрации, вы создадите удобство для пользователей. Вот некоторые из преимуществ:
Не нужно делать проверку формы входа, и вообще создавать форму;
Нет необходимости в функции «Забыл пароль»;
E-Mail адресы уже подтверждены Google, поэтому вам не нужно высылать подтверждение.
Конечно, это будет работать, только если у человека есть аккаунт Google, поэтому имеет смысл сделать что-то в дополнение к этой системе регистрации.
Настройка приложения
Первый шаг заключается в создании приложения через консоль Google API. Следуйте инструкциям для получения дополнительной информации. После завершения процесса, разместить полученные ключи в setup.php.
Запуск кода из schema.sql (вы можете найти его в архиве скачать) в PhpMyAdmin или ином административном MySQL инструменте. Это создаст glogin_users таблицу в базе данных, которая будет использоваться для хранения информации об учетных записях пользователей вашего приложения. После этого, напишите свои данные подключения к базе данных в setup.php.
PHP
Для чтения и вставки в базу данных используется библиотека Idiorm. Будем создавать следующие PHP страницы:
index.php – главный файл приложения;
setup.php – соединение с базой данных и ключи выданные Google;
Папки библиотеки Idiorm, PHP библиотеки Google.
Давайте взглянем на код первой части index.php:
Code
require 'setup.php';
// Create a new Google API client
$client = new apiClient();
//$client->setApplicationName("Tutorialzine");
// Configure it
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->setDeveloperKey($api_key);
$client->setRedirectUri($redirect_url);
$client->setApprovalPrompt(false);
$oauth2 = new apiOauth2Service($client);
// The code parameter signifies that this is
// a redirect from google, bearing a temporary code
if (isset($_GET['code'])) {
// This method will obtain the actuall access token from Google,
// so we can request user info
$client->authenticate();
// Get the user data
$info = $oauth2->userinfo->get();
// Find this person in the database
$person = ORM::for_table('glogin_users')->where('email', $info['email'])->find_one();
if(!$person){
// No such person was found. Register!
$person = ORM::for_table('glogin_users')->create();
// Set the properties that are to be inserted in the db
$person->email = $info['email'];
$person->name = $info['name'];
if(isset($info['picture'])){
// If the user has set a public google account photo
$person->photo = $info['picture'];
}
else{
// otherwise use the default
$person->photo = 'assets/img/default_avatar.jpg';
}
// insert the record to the database
$person->save();
}
// Save the user id to the session
$_SESSION['user_id'] = $person->id();
// Redirect to the base demo URL
header("Location: $redirect_url");
exit;
}
// Handle logout
if (isset($_GET['logout'])) {
unset($_SESSION['user_id']);
}
$person = null;
if(isset($_SESSION['user_id'])){
// Fetch the person from the database
$person = ORM::for_table('glogin_users')->find_one($_SESSION['user_id']);
}
HTML
Код HTML занимает нижнюю половину страницы index.php. После авторизации через Google сюда мы сможем выводить данные о пользователе. Сама страница является стандартным документом HTML5.
Code
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Google Powered Login Form | Tutorialzine Demo</title>
<!-- The stylesheets -->
<link rel="stylesheet" href="assets/css/styles.css" />
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans+Condensed:300,700" />
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<h1>Login Form</h1>
<div id="main">
<?php if($person):?>
<div id="avatar" style="background-image:url(<?php echo $person->photo?>?sz=58)"></div>
<p class="greeting">Welcome, <b><?php echo htmlspecialchars($person->name)?></b></p>
<p class="register_info">You registered <b><?php echo new RelativeTime($person->registered)?></b></p>
<a href="?logout" class="logoutButton">Logout</a>
<?php else:?>
<a href="<?php echo $client->createAuthUrl()?>" class="googleLoginButton">Sign in with Google</a>
<?php endif;?>
</div>
</body>
</html>
Скачайте пример авторизации по ссылке ниже.