Подключение к OAuth 2.0 серверу МФТИ
Порядок подключения клиента к серверу МФТИ:
- Пишем письмо на почту webmaster@phystech.edu с заголовком "OAuth2 МФТИ. Запрос на добавление нового клиента".
Либо с тем же вопросом подходим в Отдел управления информационной политикой (каб. №510 ауд. корп.).
Содержание запроса должно быть следующим:
- Client ID – имя клиента. Могут использоваться пробелы. Будет использоваться как идентификатор, так и для отображения пользователю.
- URI редиректа – адрес, куда будет возвращаться пользователь с серверной стороны. Он не обязателен, но желателен.
Если он есть, то обязательно должен быть действительным, так как это часть безопасности и правильные ответы будут возвращаться только ему (не пренебрегайте этим).
- Разрешения – необходимые разрешения для получения данных. Если, к примеру, Вам не нужен E-Mail пользователя, а только основные данные, то используйте только userinfo.
- Не забываем представиться. :)
- В ответ получаем Client Secret, которым и будем использовать для подключения.
- Входная точка сервера МФТИ:
https://mipt.ru/oauth/authorize.php?
response_type=code
&client_id=%ID клиента%
&redirect_uri=http://%адрес сайта-клиента%/%адрес до папки с клиентом%/receivecode.php
&state=%любой непустой параметр%
&scope=%разрешения через пробел (%20)%
- Ждем пользователя с ответом от сервера.
- Получаем пользователя, добро, code и state на redirect_uri.
- Далее по листингу файла receivecode.php из основной статьи.
Распишем функционал команд клиентской библиотеки, куда они обращаются и что они получают:
- $API->SetOAuthParams
$API->SetOAuthParams('https://mipt.ru/oauth/', '%Client ID%', '%Client Secret%', 'http://%адрес сайта-клиента%/%адрес до папки с клиентом%/receivecode.php');
Устанавливает параметры для клиентской библиотеки.
- $API->GetAccessToken
$API->GetAccessToken($code);
Отправляет запрос: POST
https://mipt.ru/oauth/token.php?
grant_type=authorization_code&
code=$code&
client_id=ID клиента&
client_secret=Client Secret&
redirect_uri=URI возврата
Получает JSON:
{
"access_token": "1fc12f12bcc1be12deb123ec1e123e12345ecf12",
"expires_in": 3600,
"token_type": "Bearer",
"scope": "userinfo email",
"refresh_token": "1df1234567f123456789012c12de1234a1e123c1"
}
На выходе: string access_token
- $API->GetUserBasicInfo
$API->GetUserBasicInfo($access_token);
Отправляет запрос: GET
https://mipt.ru/oauth/api.php?
access_token=$access_token&
get=userinfo
Получает JSON:
{
"id": 1111,
"firstname": "Александр",
"lastname": "Пушкин",
"secondname": "Сергеевич",
"login": "pushkin"
}
На выходе: array userinfo
- $API->GetUserEmail
$API->GetUserEmail($access_token);
Отправляет запрос: GET
https://mipt.ru/oauth/api.php?
access_token=$access_token&
get=email
Получает JSON:
{
"email": "pushkin@mipt.ru",
}
На выходе: array email
-
$API->GetSettleInfo
$API->GetSettleInfo($access_token);
Отправляет запрос: GET
https://mipt.ru/oauth/api.php?
access_token=$access_token&
get=settleinfo
Получает JSON:
{
"erfl": 2222,
"group": false,
"hostel": "№3",
"room": "215а",
}
На выходе: array settleinfo