【问题标题】:How to fetch JWT token in postman pre-request script?如何在邮递员预请求脚本中获取 JWT 令牌?
【发布时间】:2020-12-05 09:13:16
【问题描述】:

我是使用邮递员测试 api 的新手。我正在尝试获取一个 JWT 令牌,我可以将其保存为邮递员中的环境变量。我指的是关于如何做到这一点的优秀帖子:jwt-postman

我有以下 python 代码,我之前使用它来获取 jwt 令牌。

import requests
from requests.auth import HTTPBasicAuth
import json
session=requests.Session()
client_id ="abcdef"
secret="ghijklmnop"
token_auth="https://TEST/token"
hed = {'Content-Type': 'application/x-www-form-urlencoded'}
response = session.post(token_auth,headers =hed ,data = 'grant_type=client_credentials',auth =  HTTPBasicAuth(client_id,secret),verify = True)
token =  json.loads(response.content)['access_token']
print(token)

如何在pm.sendRequest 中编写相同的功能?

【问题讨论】:

  • 您在使用脚本的哪一部分以及从该 python 请求中填写详细信息时遇到问题?这是您可能需要使用的部分gist.github.com/bcnzer/…

标签: javascript python postman postman-pre-request-script


【解决方案1】:

我无法运行此程序,但您需要执行以下操作:

const options = {
    url: 'https://TEST/token',
    method: 'POST',
    header: {
        "Content-Type": "application/x-www-form-urlencoded"
    },
    body: {
        mode: 'urlencoded',
        urlencoded: [
            { key: "client_id", value: "abcdef" },
            { key: "client_secret", value: "ghijklmnop" },
            { key: "grant_type", value: "client_credentials" },
        ]
    }
};

var getToken = true;

if (!pm.environment.get('accessTokenExpiry') ||
    !pm.environment.get('currentAccessToken')) {
    console.log('Token or expiry date are missing')
} else if (pm.environment.get('accessTokenExpiry') <= (new Date()).getTime()) {
    console.log('Token is expired')
} else {
    getToken = false;
    console.log('Token and expiry date are all good');
}

if (getToken === true) {
    pm.sendRequest(options, function (err, res) {
        console.log(err ? err : res.json());
        if (err === null) {
            console.log('Saving the token and expiry date')
            var responseJson = res.json();
            pm.environment.set('currentAccessToken', responseJson.access_token)

            var expiryDate = new Date();
            expiryDate.setSeconds(expiryDate.getSeconds() + responseJson.expires_in);
            pm.environment.set('accessTokenExpiry', expiryDate.getTime());
        }
    });
}

【讨论】:

    猜你喜欢
    • 2020-03-05
    • 2020-09-18
    • 1970-01-01
    • 2020-06-19
    • 2020-03-11
    • 2020-04-10
    • 2022-06-12
    • 2015-10-26
    • 2018-02-05
    相关资源
    最近更新 更多