Обновить токен с помощью Graph OAuth v2.0 - PullRequest
0 голосов
/ 25 апреля 2018

Я запрашиваю информацию о пользователе через Microsoft Graph.Я использую конечную точку 2.0.

Это моя функция входа в систему:

login() {
    hello('msft').login({scope: Configs.scope}).then(
      () => {
        this.zone.run(() => {
          this.meService.getMe().subscribe(data => {
              localStorage.setItem('username', data.mail);
              localStorage.setItem('jobtitle', data.jobTitle);
              localStorage.setItem('loggedin', 'yes');
            },
            err => {
            console.log(err);
            },
            () => {
              this.router.navigate(['/home']);
            });
        });
      },
      e => console.error(e.error.message)
    );
  }

Это моя функция инициализации:

initAuth() {
    this.redirect_uri = window.location.href;
    hello.init({
        msft: {
          id: Configs.appId,
          oauth: {
            version: 2,
            auth: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize'
          },
          scope_delim: ' ',
          form: false
        },
      },
      {redirect_uri: window.location.href}
    );
  }

И вот я получаю токен доступа:

getAccessToken() {
    const msft = hello('msft').getAuthResponse();
    console.log(msft);
    const accessToken = msft.access_token;
    return accessToken;
  }

Я получаю токен доступа, через который я могу войти.Тем не менее, я не получаю токен обновления.Из того, что я прочитал, вы получаете обновление и токен доступа через конечную точку / token.Насколько я вижу, я использую только конечную точку / authorize, и она работает?

Это создает проблему.Я не могу обновить свой токен!

Ответ выглядит так:

access_token:
"This is private, but it's a very long string"
client_id:"e6c987d2-8bdc-4f1a-bafc-04ba3d51f340"
display:"popup"
expires:1524649746.548
expires_in:3599
network:"msft"
redirect_uri:"http://localhost:4200/"
scope:"basic,User.Read"
session_state:"89a68bd2-5ae5-4df2-88d0-d28718fd10bc"
state:""
token_type:"Bearer"

Любая помощь будет признательна!

1 Ответ

0 голосов
/ 25 апреля 2018

Поскольку вы используете Неявное предоставление , вы не можете использовать токены обновления. Они поддерживаются только с использованием кода авторизации .

Чтобы использовать токены обновления, вам нужно переключиться на грант кода авторизации и внедрить код на стороне сервера, чтобы обработать код авторизации в токене доступа. Вам также нужно будет запросить область действия offline_access, которая запускает генерацию refresh_token.

...