В этом уроке я покажу вам, как создать кнопку входа 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 |
echo file_get_contents ( "https://apis.live.net/v5.0/me?access_token=" . $access_token ); |
Интеграция Microsoft Login в WordPress
WordPress сделан на PHP, поэтому весь код будет одинаковым для авторизации пользователя и получения информации профиля. Для создания URL перенаправления в WordPress используйте WordPress AJAX API .
Последние мысли
Если вы хотите больше, чем просто Войти, увеличьте разрешения в списке разрешений и сохраните токен доступа и обновите токен в базе данных для дальнейшего использования. Убедитесь, что вы обновили токен доступа после его обновления. Не делитесь секретом клиента ни с кем.