Перейти к основному содержимому

Авторизация по протоколу OAuth 2.0

Сервис $http позволяет выполнять HTTP-запросы с авторизацией по протоколу OAuth 2.0.

подсказка

Для интеграции с наиболее распространенными сервисами, которые требуют авторизации OAuth 2.0, рекомендуется вместо $http использовать встроенный сервис $integration.

Синтаксис

Чтобы включить авторизацию по протоколу OAuth 2.0, добавьте в настройки метода $http.query или $http.config поле oauth2ResourceDetail. Это должен быть объект с полями:

  • grantType — тип авторизации.

    предупреждение

    JAICP поддерживает только типы, которые не требуют от пользователя переходить на сторонний сервис авторизации. Например, поддерживается client_credentials, но не поддерживается authorization_code.

  • accessTokenUrl — URL, на который JAICP будет отправлять запросы на предоставление и обновление ключей.

  • clientId — идентификатор клиента. Его предоставляет сервер авторизации при регистрации приложения.

  • clientSecret — секретный ключ клиента. Его предоставляет сервер авторизации при регистрации приложения.

примечание

В oauth2ResourceDetail могут быть и другие поля — их точный набор зависит от сервера авторизации.

Использование в сценарии

Если авторизацию получает пользователь бота, для каждого пользователя нужно использовать свои учетные данные.

state: UserName
q!: * как меня зовут *
script:
$temp.response = $http.query("https://example.com/api/v1/users/me", {
oauth2ResourceDetail: {
grantType: "client_credentials",
accessTokenUrl: "https://example.com/oauth2/token",
clientId: "bot",
// Секретный ключ нужно предварительно узнать у пользователя.
clientSecret: $client.secret,
// Другие поля
parameterIncludes: { realm: "/customer" },
tokenPrefix: "sso_1.0_"
}
});
if: $temp.response.isOk
a: Вас зовут {{$temp.response.data.name}}.
else:
a: Я не знаю…