Вход через META
Приложение запрашивает код
Получение токена в обмен на код, извлеченный из URL:
- Приложение направляет пользователя на страницу META.OAuth, где он может разрешить доступ к своим данным.
- Пользователь разрешает доступ приложению.
- META.OAuth перенаправляет пользователя на адрес, указанный в поле Callback URL при регистрации приложения. Код подтверждения (или описание ошибки) передается в параметре URL перенаправления.
- Приложение получает адрес перенаправления и извлекает код подтверждения.
- Приложение отправляет POST-запрос с кодом.
- META.OAuth возвращает токен или ошибку в теле ответа.
Регистрируете приложение
Вы можете добавить доверенное приложение, в таком случае мета не станет спрашивать у пользователя подтверждения в выдаче токена. Это полезно, когда вы делаете вход для своих внутренних сервисов.
Запрос кода подтверждения
http://YOUR-META-URL/oauth2/authorize?response_type=code
client_id=<идентификатор приложения>
& redirect_uri=<адрес перенаправления>
& state=<произвольная строка>
& scope=<запрашиваемые необходимые права>
Получение кода подтверждения из URL
Когда пользователь разрешает доступ к своим данным META.OAuth перенаправляет пользователя на указанный вами redirect_uri с добавлением GET параметра code
Обмен кода подтверждения на токен
Приложение отправляет код, а также свой идентификатор и пароль в POST-запросе.
POST /oauth2/token HTTP/1.1
Host: YOUR-META-URL
Content-type: application/x-www-form-urlencoded
Content-Length: <длина тела запроса>
grant_type=authorization_code
& code=<код подтверждения>
& client_id=<идентификатор приложения>
& client_secret=<пароль приложения>
Формат ответа с токеном
{
"scopes": [
"userinfo.profile"
],
"token_type": "bearer",
"expires": 300,
"access_token": "eyJraWQiOiJhZWRiYmZlN2NjZjA3YzRiZWZkNDUwOTAxNTAxYjgzNzg3Njg1ZWNmIiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ.eyJhdWQiOiJhcGlzLmRldmlzaW9uLmlvIiwic3ViIjoiMTAxOTEiLCJpdWlkIjowLCJzY29wZSI6InVzZXJpbmZvLnByb2ZpbGUiLCJpc3MiOiJ0b2tlbi1pc3N1ZXIuZGV2aXNpb24uaW8iLCJleHAiOjE1NDQ1NDY0NjYsImlhdCI6MTU0NDU0NjE2Nn0.kztLoOpqCSomQklGkORtkHS1Zg50SgIFn__79FNTZZJMLPrg0jj57aWQEcJwknWIN7yakUVq9RlEq8JL_k_LwNhFlZshaVCFDiOsXa3e6-U1l4z8ZRYOPcbT0imWdajHB34pU95Q-_OQWlsAhvWTqGd04maUil0EbubwDOuaLZlOpXbgjn2paGe_E0augK9DJk4XVHC24RD8ZKluzJLE0PO22AzI44tJu2WgB_P_alT6Z6R6ur8-yWhEjCEHyUb9a9Elq-qNcDnxg4Td9GP4nFsfCak4zZd6jWE0ITfpDsYuczINIQsYCgQIfeDB2plDqBMuzTEycOb5i1EmxzLEqw",
"refresh_token": "da6e4c37987447312311a59fbc9d5b421",
"user_id": 10191,
"company_id": 1
}
- scopes: Области доступа, доступные этому токену
- token_type: Тип выданного токена. Всегда принимает значение «bearer»
- expires: Время жизни токена в секундах
- access_token: OAuth-токен с запрошенными правами
- refresh_token: Токен, который можно использовать только для продления срока жизни соответствующего OAuth-токена"'
Время жизни refresh-токена совпадает с временем жизни OAuth-токена.
Если выдать токен не удалось, то ответ содержит описание ошибки:
{
"token_type": "bearer",
"error": "<код ошибки>",
"error_description": "<описание ошибки>"
}
Обновить токен
Получение токена в обмен на refresh-токен:
- Приложение отправляет POST-запрос с refresh-токеном.
- META.OAuth возвращает новый access_token в теле ответа.
POST /oauth2/token HTTP/1.1
Host: YOUR-META-URL
Content-type: application/x-www-form-urlencoded
Content-Length: <длина тела запроса>
grant_type=refresh_token
& refresh_token=<refresh_token>
& client_id=<идентификатор приложения>
& client_secret=<пароль приложения>
В теле ответа вы получите такую же структуру, как и в случае получения токена по authorization_code