Bonjour à tous,
Dans l'optique d'une reconversion professionnelle, et dans l'attente d'une entrée en formation développeur Web en Octobre, j'ai décidé de commencer à me former en autodidacte. Pour cela, j'ai choisi de développer un site avec Angular, et un backend sous Node JS.
Le site que je développe est en quelques sortes une copie entre LinkedIn et Indeed.
Pour cela, j'ai besoin que mes candidats indiquent les compétences qu'ils possèdent, et donc je voudrais faire appel à une des API de Pole Emploi.
J'utilise Axios pour accéder aux données. Comme le dit la documentation de Pole Emploi, nous avons besoin d'une requète POST pour obtenir un access_token, puis une fois le token obtenu nous pouvons chercher dans la base de données les différentes compétences ou métiers.
Sur mon server j'ai donc réaliser la méthode suivante :
const axios = require('axios');
const config_pole_emploi = require('./config/pole-emploi.json');
app.post('/connexion/pole_emploi', 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';
axios({
method: 'post',
url,
data,
withCredentials: true,
transformRequest: getQueryString,
})
.then((response) => {
console.log(response.data.access_token);
res.send(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);
});
});
J'obtiens bien sur Node mon token et grace a Postman, je vois bien mon token qui change à chaque requête.
En revanche, pour la suite, je bloque pour plusieurs raisons : je ne sais pas comment récuperer ce token, ni même où je pourrais l'utiliser (sur Node pour récuperer les données et ensuite les renvoyer vers ma partie front, ou directement sur ma partie front dans un service pour les injecter directement ensuite).
Je manque de methodologie... et je n'arrive pas a trouver de solution via google, stack overflow etc (ca fait 2 semaines que je planche sur le sujet...)...
J'ai fait plusieurs essais comme par exemple :
async getAccessToken() {
this.http.post(`${this.CONNEXION_POLE_EMPLOI}`);
}
async getCompetences(value: any) {
const token = await this.getAccessToken();
return axios
.get(
`https://api.emploi-store.fr/partenaire/explorateurmetiers/v1/explorateurmetiers?libelle=${value}&nombre=20&type=competence`,
{
headers: { Authorization: `Bearer ${token}` },
}
)
.then((result) => result.data);
}
Mais ceci me renvoie une erreur :
Access to XMLHttpRequest at 'https://entreprise.pole-emploi.fr/connexion/oauth2/access_token/realm=partenaire' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Est ce que quelqu'un aurait une idée pour m'orienter s'il vous plait? Le tout en prenant en compte que je suis débutant =).
Merci à vous et au plaisir de vous lire.
Bonne journée
Salut Patatram,
Bienvenu dans le monde du dev web.
Si tu est débutant c'est normal que tu ne maitrise pas encore le concept des API.
Ce qu'il faut savoir, c'est que le principe de fonctionnement des API reste le même quelqu'en soit le language utilisé, et quelq'en soit le côté où l'on se trouve (Client ou Serveur).
Si tu ne l'a pas déjà fait, je te conseille de taper "fonctionnement d'une API" sous Google et tu aura des tonnes d'infos.
Ceci devrait t'apporter des réponses à la question : "...comment récuperer ce token, ...où je pourrais l'utiliser".
Concernant ton erreur "Access to XMLHttpRequest at...", je te propose la consultation de cette page qui devrait t'éclairer sur les échanges "Cross-origin resource sharing (CORS)" :
https://developer.mozilla.org/fr/docs/Web/HTTP/CORS
Bon courage