Как обновить токен API outlook 2.0, используя токен обновления? - PullRequest
0 голосов
/ 05 ноября 2018

У меня следующая ситуация: Основной поток аутентификации происходит на сервере, затем клиентская сторона получает эти данные, так как с этого момента я хочу, чтобы клиент мог обновлять токен самостоятельно. Кажется, на клиенте есть все необходимые данные (access_token, refresh_token), но я не могу понять, как организовать запрос к https://login.microsoftonline.com/common/oauth2/v2.0/token маршруту.

Сначала я попытался получить ответ json:

$.ajax({
  url: `https://login.microsoftonline.com/common/oauth2/token?grant_type=refresh_token&refresh_token=refresh_token&scope=openid%20profile%20offline%20access%20user.read%20mail.read%20contacts.read%20calendars.read&client_id=client&client_secret=secret`,
  type: 'POST',
  cache: false,
  processData: false,
  contentType: false,
  dataType: 'json',
  headers: {
    'Host': 'https://login.microsoftonline.com',
    'Content-Type': 'application/json'
  },
  success: function(data) {
    ...
  },
  error: function(xhr) {
    ...
  }
});

После этого я понял, что эти данные можно получить только с помощью перенаправления, правильно? Если да, может кто-нибудь привести пример того, как это реализовать, похоже, что нужно создать iframe и как-то обработать авторизацию. Спасибо.

ОБНОВЛЕНИЕ: поскольку Алина Ли указала в комментарии к своему ответу, решение есть прямо в официальном документе https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow

1 Ответ

0 голосов
/ 06 ноября 2018

Согласно моему тесту, вы можете использовать токен обновления через следующий код:

var data = "grant_type=refresh_token&refresh_token=refreshToken&client_id=" + appState.clientId;
        $http = $http || $injector.get('$http');
        $http.post(authUrl + '/token', data, {
            headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
        }).success(function (response) {

        }).error(function (err, status) {

        });

Вам не нужно добавлять scope параметр.

Ссылка от:

Сохранение токена обновления в JavaScript, получение нового токена доступа

...