在loopback4的express中行为类似于response.redirect的代码?

时间:2019-04-28 11:30:45

标签: express loopbackjs loopback

我是Loopback4中的新手。 我正在开发代码以获取Google访问令牌。 如何实现Express重定向之类的功能?

我已经用express成功实现了它。 现在,我想将其实现为loopback4的独特功能。

基于Express的代码(已经可以使用)

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);
});

环回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;
  }

这将重定向到指定的网址。

1 个答案:

答案 0 :(得分:0)

您需要为此使用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);
  }

希望有帮助。