J'essaye d'envoyer une demande authentifiée avec un clic dans le facteur.
J'ai donc une requête nommée "Oauth" et J'utilise des tests pour stocker le jeton dans une variable locale.
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("token", jsonData.access_token);
Ce que j'essaie de faire maintenant, c'est d'exécuter automatiquement la requête Oauth (à partir d'un script de pré-requête)) pour toute autre requête nécessitant un jeton porteur.
Existe-t-il un moyen d'obtenir un jeton d'accès et d'envoyer une demande authentifiée en un clic sur un facteur?
NOTE: Il existe maintenant un moyen de le faire dans un script de pré-requête, voir les autres réponses . Je vais garder cette réponse pour la postérité mais juste pour que tout le monde sache :)
Je ne pense pas qu'il soit possible de faire cela dans le script de pré-demande pour l'instant, mais vous pouvez le réduire en quelques clics si vous utilisez une variable et l'onglet Tests. Il y a des instructions plus complètes sur le blog Postman , mais l'essentiel est:
Dans la section Tests de cette demande, stockez le résultat de cette demande dans une variable, éventuellement du type suivant:
var data = JSON.parse(responseBody);
postman.setEnvironmentVariable("token", data.token);
Exécutez la demande d'authentification - vous devriez maintenant voir que token
est défini pour cet environnement (cliquez sur l'icône en forme d'œil en haut à droite).
{{token}}
où que vous ayez auparavant collé dans le jeton porteur.Pour actualiser le jeton, il vous suffit de réexécuter la demande d'authentification.
Un peu tard, mais pour les autres personnes qui tombent sur ce message, il est maintenant IS possible d'envoyer une autre demande à partir du Pre-request Script
section. Quelques exemples peuvent être trouvés ici: https://Gist.github.com/madebysid/b57985b0649d3407a7aa9de1bd32799
Comme mentionné par KBusc et inspiré de ces exemples, vous pouvez atteindre votre objectif en définissant un script de pré-requête comme suit:
pm.sendRequest({
url: pm.environment.get("token_url"),
method: 'GET',
header: {
'Authorization': 'Basic xxxxxxxxxx==',
}
}, function (err, res) {
pm.environment.set("access_token", res.json().token);
});
Ensuite, vous faites simplement référence à {{access_token}}
comme toute autre variable d’environnement.
Vous ne pouvez pas envoyer une autre demande de Pre-request Script
section, mais en fait, il est possible d’enchaîner des requêtes et de les exécuter les unes après les autres.
Vous collectez votre demande dans la collecte et l'exécutez avec Collection Runner
.
Pour voir les résultats de la demande, vous pouvez suivre autre réponse .
Vous pouvez ajouter un script de pré-requête à la collection, qui sera exécuté avant chaque requête de Postman. Par exemple, j'utilise ce qui suit pour retourner un jeton d'accès d'Apigee
const echoPostRequest = {
url: client_credentials_url,
method: 'POST',
header:
'Authorization: Basic *Basic Authentication string*'
};
var getToken = true;
if (!pm.environment.get('token'))
{
console.log('Token missing')
}
else
{
console.log('Token all good');
}
if (getToken === true) {
pm.sendRequest(echoPostRequest, function (err, res) {
console.log(err ? err : res.json());
if (err === null) {
console.log('Saving the token');
console.log(res);
var responseJson = res.json();
console.log(responseJson.access_token);
pm.environment.set('token', responseJson.access_token)
}
});
}