В данной статье рассмотрим регистрацию на сайте через Google.
Создайте в корне своего сайта 2 папки, например social_login и social_login_callback. В первой будут храниться файлы для использования их в качестве прямых ссылок на инициализацию аутентификации в социальной сети, а во второй обработчики ответов от Google.
Чтобы создать новое приложение перейдите по этой ссылке и нажмите на кнопку "Создать"
Теперь можно изменить название приложения, при необходимости, и нужно нажать на кнопку "Создать"
Процесс создания может занимать некоторое время. Не уходите со страницы.
Теперь выбираем "Создать учетные данные" и Идентификатор клиента OAuth.
Вам может быть предложено указать название продукта. В этом случае нажмите Настроить окно запроса доступа, укажите запрашиваемую информацию и нажмите Сохранить, чтобы вернуться к экрану "Учетные данные".
В разделе Тип приложения выбираем Веб-приложение.
Заполняем поле "Разрешенные URI перенаправления", указав полный путь к файлу обработчика, например https://site.ru/social_login_callback/google.php
Нажимаем кнопку Создать.
На появившейся странице копируем идентификатор и секретный ключ клиента – они понадобятся нам при настройке нашего скрипта.
Создаем файл google.php в папке social_login и записываем в него код:
$client_id = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; // Client ID
$client_secret = 'XXXXXXXXXXXXXXXXXXXXXXX'; // Client secret
$redirect_uri = 'https://site.ru/social_login_callback/google.php'; // Redirect URI
$url = 'https://accounts.google.com/o/oauth2/auth';
$params = array(
'redirect_uri' => $redirect_uri,
'response_type' => 'code',
'client_id' => $client_id,
'scope' => 'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile'
);
header('Location: '. $url . '?' . urldecode(http_build_query($params)) ); exit();
Теперь ссылка вида http://site.ru/social_login/google.php будет для того чтобы пользователь инициировал регистрацию через Яндекс.
Для того, чтобы получить ответ от Google и email юзера создадим файл google.php, но теперь в папке social_login_callback и запишем в него следующий код:
$client_id = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; // Client ID
$client_secret = 'XXXXXXXXXXXXXXXXXXXXXXX'; // Client secret
$redirect_uri = 'https://site.ru/social_login_callback/google.php'; // Redirect URI
if (isset($_GET['code'])) {
$result = false;
$params = array(
'client_id' => $client_id,
'client_secret' => $client_secret,
'redirect_uri' => $redirect_uri,
'grant_type' => 'authorization_code',
'code' => $_GET['code']
);
$url = 'https://accounts.google.com/o/oauth2/token';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, urldecode(http_build_query($params)));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($curl);
curl_close($curl);
$tokenInfo = json_decode($result, true);
if (isset($tokenInfo['access_token'])) {
$params['access_token'] = $tokenInfo['access_token'];
$userInfo = json_decode(file_get_contents('https://www.googleapis.com/oauth2/v1/userinfo' . '?' . urldecode(http_build_query($params))), true);
if (isset($userInfo['id'])) {
$userInfo = $userInfo;
$result = true;
}
}
/* дополнительные данные
print_r($userInfo);
*/
$email =$userInfo['email']; // почта юзера
}
Ссылки по теме: