在环回 4 中表现得像 response.redirect inn express 的代码?

Code that behaves like response.redirect in express in loopback4?

我是 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;
  }

这将重定向到指定的 Url。

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

希望对您有所帮助。