【问题标题】:Node JS: I can't get my access_token on clientNode JS:我无法在客户端获取我的 access_token
【发布时间】:2022-06-15 22:31:12
【问题描述】:

我使用 NodeJS 作为后端,使用 Angular 13+ 作为前端。

我需要连接到 API Pole-Emploi,我使用 POST 请求并在我的服务器上接收我的 access_token。下一步是获取一些权限的 GET 请求。但我不知道我该如何处理这个 GET 请求......我在我的节点服务器上尝试过,直接在我的客户端上,但没有。我正在使用 axios 来完成我的请求。

我的 POST 向我发送令牌,但我的名为令牌的变量发送未定义... 我想我必须将我的令牌存储在一个变量中并在我的客户端发送它,但我不知道该怎么做。

如果有人有教程或可以给我一些帮助,我将非常感激

app.post('/pole_emploi/connexion', async (req, res) => {
  let data = {
    grant_type: config_pole_emploi.grant_type,
    client_id: config_pole_emploi.client_id,
    client_secret: config_pole_emploi.client_secret,
    scope: config_pole_emploi.scope,
  };
  function getQueryString(data = {}) {
    return Object.entries(data)
      .map(
        ([key, value]) =>
          `${encodeURIComponent(key)}=${encodeURIComponent(value)}`
      )
      .join('&');
  }
  let url =
    'https://entreprise.pole-emploi.fr/connexion/oauth2/access_token?realm=%2Fpartenaire';

  token = await axios({
    method: 'post',
    url,
    data,
    withCredentials: true,
    transformRequest: getQueryString,
  })
    .then((response) => {
      res.send(response.data.access_token);
      // res.json({access_token: response.data.access_token })
    })
    .catch((error) => {
      if (error.response) {
        let { status, statusText } = error.response;
        console.log(status, statusText);
        res.status(status).send(statusText);
      } else res.status(404).send(error);
    });
  console.log(token);
});

我在我的节点服务器上尝试了 GET 请求,如下所示:

app.get('/get_competences/pole_emploi', async (req, res) => {
  await axios
    .get(
      `https://api.emploi-store.fr/partenaire/explorateurmetiers/v1/explorateurmetiers?libelle=a&nombre=20&type=competence`,
      {
        headers: { Authorization: `Bearer ${token}` },
      }
    )
    .then((result) => result.data);
});

在我的客户端:

  postAccessToken() {
    let headers = { 'Content-Type': 'application/x-www-form-urlencoded' };
    return this._http.post(`${this.POLE_EMPLOI_URL}/connexion`, headers);
  }

  getCompetences(value: string): Observable<any> {
    const token =  this.postAccessToken();
    const httpOptions = {
      headers: new HttpHeaders({
        Authorization: `Bearer ${token}`,
      }),
    };
    return this._http.get(
      `https://api.emploi-store.fr/partenaire/explorateurmetiers/v1/explorateurmetiers?libelle=${value}`,
      httpOptions
    );
  }

什么都没有……

那么,我不确定 axios 是否适合这种类型的请求...

如果有人有教程或可以给我一些帮助,我会非常感谢

谢谢

【问题讨论】:

  • 我不确定,但您应该尝试在您的第一个文件中将此部分修改为 token = await axios({ method: 'post', url, data, withCredentials: true, transformRequest: getQueryString(), })

标签: node.js angular server frontend backend


猜你喜欢
  • 2021-03-30
  • 1970-01-01
  • 1970-01-01
  • 2020-08-22
  • 1970-01-01
  • 1970-01-01
  • 2017-10-02
  • 2020-04-10
  • 1970-01-01
相关资源
最近更新 更多