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-сервером код для проверки подлинности запросов. В ответе возвращается ключ для использования токенов.
{
"GetOAuthToken" :
{
"tArg" :
{
"applicationUrl" : "https:\/\/myserver.com\/FP_App_v10.x\/r\/#\/redirect",
"loginCode" : "g0ZGZmNjVmOWI",
"svcKey" : "0",
"state" : "ED9F5DF6E55440CDA86561A87A71CD33"
}
}
}
{
"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;
}
См. также: