GetOAuthToken

Синтаксис

GetOAuthTokenResult GetOAuthToken(GetOAuthTokenArg tArg)

Параметры

tArg. Параметры выполнения операции.

Описание

Операция GetOAuthToken выполняет получение токенов с внешнего сервиса.

Комментарии

Перед выполнением операции GetOAuthToken предполагается, что уже были выполнены операции GetOAuthSettings, CreateOAuthState, пользователь прошел аутентификацию на внешнем сервисе и доступны результаты всех этих действий.

Для выполнения операции GetOAuthToken укажите в поле tArg.svcKey использованный ранее ключ сервиса аутентификации, в поле tArg.applicationUrl путь до корня веб-приложения, который будет использоваться в качестве адреса возврата в приложение, значение должно быть равно указанному ранее в CreateOAuthState.tArg.redirectUri. В полях tArg.loginCode и tArg.state укажите значения полученных параметров code и state соответственно.

При выполнении запроса BI-сервер проверит значение параметра для защиты от потенциальных CSRF-атак при получении кода авторизации. В случае успешной проверки произойдет обращение к внешнему сервису для получения токенов. BI-сервер вернёт ключ для использования токенов. Данный ключ будет доступен в поле oauth_token результата выполнения операции и далее может быть передан в операцию OpenMetabase.

Пример

Ниже приведён пример получения токенов с внешнего сервиса. Предполагается, что все необходимые операции уже выполнены и получены результаты их работы. В запросе отправляется URL-адрес страницы, на которую будет осуществляться переадресация после аутентификации, код, полученный при аутентификации, ключ настроек сервиса аутентификации и сгенерированный BI-сервером код для проверки подлинности запросов. В ответе возвращается ключ для использования токенов.

SOAP-запрос:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<GetOAuthToken xmlns="http://www.fsight.ru/PP.SOM.Som">
<tArg xmlns="">
  <applicationUrl>https://myserver.com/FP_App_v10.x/r/#/redirect</applicationUrl>
  <loginCode>g0ZGZmNjVmOWI</loginCode>
  <svcKey>0</svcKey>
  <state>ED9F5DF6E55440CDA86561A87A71CD33</state>
  </tArg>
  </GetOAuthToken>
  </s:Body>
  </s:Envelope>

SOAP-ответ:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<GetOAuthTokenResult xmlns="http://www.fsight.ru/PP.SOM.Som" xmlns:q1="http://www.fsight.ru/PP.SOM.Som" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <oauth_token xmlns="">g0ZGZmNjVmOWI</oauth_token>
  </GetOAuthTokenResult>
  </soapenv:Body>
  </soapenv:Envelope>

JSON-запрос:

{
"GetOAuthToken" :
{
"tArg" :
{
"applicationUrl" : "https:\/\/myserver.com\/FP_App_v10.x\/r\/#\/redirect",
"loginCode" : "g0ZGZmNjVmOWI",
"svcKey" : "0",
"state" : "ED9F5DF6E55440CDA86561A87A71CD33"
}
}
}

JSON-ответ:

{
"GetOAuthTokenResult" :
{
"oauth_token" : "g0ZGZmNjVmOWI"
}
}
public static GetOAuthTokenResult GetOAuthToken(string url, string code, uint key, string checkState)
{
var somClient = new SomPortTypeClient(); // Прокси-объект для выполнения операций
// Параметры выполнения операции
var tGet = new GetOAuthToken()
{
tArg = new GetOAuthTokenArg()
{
applicationUrl = url,
loginCode = code,
svcKey = key,
state = checkState
}
};
// Получение токена
var result = somClient.GetOAuthToken(tGet);
return result;
}

См. также:

Работа с репозиторием