在postman中设置通过授权码流程获取token 以及 自动刷新token

Authorization code flow 获取token, 之前都是先从浏览器上访问输入用户名/密码后得到code, 拿着code到postman上通过request拿到token 感觉很麻烦 后来发现 postman上可以直接配置,还挺方便 虽然还是有点问题 但是比之前好多了

配置如下图:

然后 就可以获取一个到token了

点击Manage Tokens 就可以查看token相关信息, 点击Use Token就可以使用token, 如果是在Collections 上设置的话, 它下面的所有request默认(Authorization -> Inherit auth from pare...)就都会使用该token(token加的位置 第一张图上可以设置)

然后有个问题就是 postman不能自动使用refreshToken 获取新的token, 后面token失效只能重新获取token或是手动刷新.

所以我只是随便新建了一个request, 按上面图配置Authorization, 然后Get New Access Token 之后设置Prepare-request Script 点一下send将需要的信息加到变量里(其实可以直接手动将需要的信息加到变量里)

Prepare-request Script  代码

pm.collectionVariables.set('access_token', pm.request.auth.oauth2.get('accessToken'));
pm.collectionVariables.set("refresh_token", "手动粘贴拿到的refresh token"); 
pm.collectionVariables.set("asscess_token_expires_in", new Date().getTime() + '手动粘贴拿到的token的过期时间');

然后设置request所在的Collection

首先设置Authorization

然后在Prepare-request Script里添加自动刷新token的代码

// Refresh the OAuth token if necessary
const tokenTimestamp = pm.collectionVariables.get("asscess_token_expires_in");
const refreshToken = pm.collectionVariables.get("refresh_token");
if(!(tokenTimestamp && refreshToken) ){
return;
}
const nowTimestamp = new Date().getTime();
if((nowTimestamp - tokenTimestamp) >= 0) {
    console.log('token expired will reget token thought refresh token');
   pm.sendRequest({
      url:  pm.globals.get("ping_oauth_base_url")+'/as/token.oauth2', 
      method: 'POST',
      header: {
        'Content-Type': 'application/x-www-form-urlencoded',
      },
      body: {
           mode: 'urlencoded',
           urlencoded : [
                      { key: 'grant_type', value: 'refresh_token'},
                      { key: 'refresh_token', value: pm.collectionVariables.get("refresh_token")},
                      { key: 'client_id', value: pm.collectionVariables.get("ac_client")},
           ]
      },
  }, function (err, res) {
        if (err) throw new Error(err);
        pm.collectionVariables.set("access_token", res.json().access_token);
        pm.collectionVariables.set("asscess_token_expires_in", new Date().getTime() + res.json().expires_in * 1000 );
  });
}

这样在每次发送request的时候 就会自动判断token是不是失效了 失效的话就重新获取token

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值