В этом уроке я покажу вам, как создать кнопку входа Microsoft для вашего сайта с использованием PHP. Для начала давайте ответим на вопрос: что такое OAuth? OAuth — это протокол, используемый для безопасной авторизации веб-сайтов и приложений для доступа к пользовательской информации на других веб-сайтах. Есть две версии OAuth, 1.0 и 2.0. В этом посте мы будем использовать OAuth 2.0 для создания системы входа Microsoft.
Что такое Microsoft Log-In?
Вход в систему Microsoft означает запрос пользователя на предоставление доступа к его / ее действующей информации Microsoft, такой как идентификатор электронной почты, имя пользователя и т. Д. После того, как ваш веб-сайт получил доступ и получил всю эту информацию о пользователе, он может разрешить пользователям доступ к защищенным страницам вашего сайта. Веб-сайт.
Настройка каталога и файлов
Прежде чем начать, вам нужно создать файл PHP с именем redirect.php. Разместите этот файл в любом месте вашего веб-пространства.
Создание приложения Microsoft
Если ваш веб-сайт разрешает вход в систему с использованием Microsoft, то он считается приложением Microsoft. Итак, у вас есть готовый веб-сайт, и теперь пришло время зарегистрировать его в качестве приложения Microsoft. Выполните следующие шаги, чтобы создать приложение Microsoft:
- Посетите страницу приложений Microsoft .
- Теперь создайте приложение Microsoft
- Выберите Параметры API и для переадресации URL-адреса передайте URL-адрес, указывающий на файл redirect.php.
- Вы можете найти идентификатор клиента и секрет клиента в настройках приложения.
Создание входа с помощью кнопки Microsoft
Когда пользователь нажимает кнопку «Вход», вам нужно запустить этот код, чтобы перенаправить пользователя на веб-сайт Microsoft Live, чтобы пользователь мог разрешить вашему приложению доступ к его информации.
$client_id = "";
2 $redirect_uri = "";
3 $scopes = "wl.basic,wl.offline_access,wl.signin,wl.emails";
4
5 header("Location: " . "https://login.live.com/oauth20_authorize.srf?client_id=" . $client_id . "&scope=" . $scopes . "&response_type=token&redirect_uri=" . $redirect_uri);
Области представляют список разрешений для приложения. Вам нужно передать список разрешений через запятую. Список всех областей применения .
Заполните $client_idи $redirect_uriпеременные.
Перенаправление обратно в приложение
Как только пользователь предоставит доступ к приложению, Microsoft перенаправит пользователя обратно на URI перенаправления. Теперь вам нужно получить токен доступа, который действует как разрешение на получение информации о пользователе.
В файле redirect.php вы можете получить токен доступа, запустив этот код
<?php
$client_id = "";
$client_secret = "";
$redirect_uri = "";
//$_GET["code"] is the authorization code
if(isset($_GET["code"]))
{
//user granted permission
//get access token using the authorization code
$url = "https://login.live.com/oauth20_token.srf";
$fields = array("client_id" => $client_id, "redirect_uri" => $redirect_uri, "client_secret" => $client_secret, "code" => $_GET["code"], "grant_type" => "authorization_code");
foreach($fields as $key=>$value) { $fields_string .= $key."=".$value."&"; }
rtrim($fields_string, "&");
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded"));
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$result = curl_exec($ch);
$result = json_decode($result);
curl_close($ch);
//this is the refresh token used to access Microsoft Live REST APIs
$access_token = $result->access_token;
$refresh_token = $result->refresh_token;
}
else
{
echo "An error occured";
}
?>
Заполняем переменную $client_id, $client_secretи $redirect_uri.
Наконец мы получили $access_tokenи $refresh_token. $access_tokenобычно истекает через 1 час, поэтому $refresh_tokenиспользуется для получения нового токена доступа через каждые 1 час.
Если срок действия маркера доступа истек, вы, скорее всего, получите ошибку в содержимом HTTP-ответа при выполнении запросов к API REST.
С помощью этой функции вы можете получить новый токен доступа
function new_access_token($refresh_token)
{
$url = "https://login.live.com/oauth20_token.srf";
$fields = array("client_id" => $client_id, "redirect_uri" => $redirect_uri, "client_secret" => $client_secret, "grant_type" => "refresh_token", "refresh_token" => $refresh_token);
foreach($fields as $key=>$value) { $fields_string .= $key."=".$value."&"; }
rtrim($fields_string, "&");
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded"));
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$result = curl_exec($ch);
$result = json_decode($result);
curl_close($ch);
$access_token = $result->access_token;
return $access_token;
}
Звонки в REST API
Вы можете найти список всех API REST в справочнике по Microsoft REST API . Все запросы к этим API должны быть выполнены с использованием токена доступа.
Чтобы получить информацию о профиле пользователя, вам нужно сделать запрос GET такого типа.
1 |
echofile_get_contents("https://apis.live.net/v5.0/me?access_token=". $access_token); |
Интеграция Microsoft Login в WordPress
WordPress сделан на PHP, поэтому весь код будет одинаковым для авторизации пользователя и получения информации профиля. Для создания URL перенаправления в WordPress используйте WordPress AJAX API .
Последние мысли
Если вы хотите больше, чем просто Войти, увеличьте разрешения в списке разрешений и сохраните токен доступа и обновите токен в базе данных для дальнейшего использования. Убедитесь, что вы обновили токен доступа после его обновления. Не делитесь секретом клиента ни с кем.
