Код, который ведет себя как response.redirect в выражении в loopback4? - PullRequest
0 голосов
/ 28 апреля 2019

Я новичок в loopback4. Я разрабатываю код для получения токена доступа Google. как реализовать такие функции, как перенаправление Express?

Мне уже удалось реализовать его с помощью экспресс. Теперь я хочу реализовать его как уникальную функцию loopback4.

Экспресс-код (уже работает)

router.get('/googleiab/token/request', function (req, res) {
    let oauth2Client = new OAuth2(client_id, client_secret, redirect_uri);
    let url = oauth2Client.generateAuthUrl({
        access_type: 'offline',
        scope: scopes,
    });
    res.redirect(url);
});

Loopback 4

@get('/googleiab/token/request')
  tockenRequest(): void {
    let oauth2Client = new OAuth2(client_id, client_secret, redirect_uri);
    let url = oauth2Client.generateAuthUrl({
      access_type: 'offline',
      scope: scopes,
    });
    this.redirect('/googleiab/token/request', url, 301); //res.redirect(url);
    //return url;
  }

Это перенаправит на указанный URL.

1 Ответ

0 голосов
/ 29 апреля 2019

Вам необходимо использовать RequestContext для этой цели.

См. Ниже.

Добавьте эту инъекцию в конструктор

@inject(RestBindings.Http.CONTEXT)
protected reqContext: RequestContext

Затем сделайте это в вашем методе tockenRequest.

@get('/googleiab/token/request')
  tockenRequest(): void {
    let oauth2Client = new OAuth2(client_id, client_secret, redirect_uri);
    let url = oauth2Client.generateAuthUrl({
      access_type: 'offline',
      scope: scopes,
    });
    this.reqContext.response.redirect(url);
  }

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...