0

我无法为此过程自动化邮递员脚本:

  1. 打开邮递员,然后在授权选项卡中选择类型->OAuth 2.0,添加授权数据->请求标头和访问令牌->获取访问令牌填充字段-令牌名称、授予类型->授权码、回调 URL、验证 URL、访问令牌 URL ,客户端 ID,范围,状态,客户端身份验证->作为基本身份验证标头发送,然后当请求令牌时,会打开 SSO 的弹出窗口, 在此处输入图像描述

  2. 然后弹出管理访问令牌,然后选择底部的使用令牌按钮,然后运行api url,现在在Header tab->temperory headers中包含令牌。如何通过将令牌存储在环境变量中来自动化此过程,然后使用它运行 API 的其余部分。

4

2 回答 2

0

使用刷新令牌这也可以在更短的时间内实现通过 API https://{{auth0_domain}}/oauth/token BODY-获取刷新令牌

grant_type:password      
client_id:abcdefghijklmn
audience:https://abcd.com
username:abcd
password:efgh
scope:openid profile email offline_access

在响应中将生成刷新令牌,然后此令牌可用于获取 accesss_token,而无需在将来再次生成刷新令牌。这只是一个一次性的过程,不会在一天、一周或一个月内过期。

于 2020-06-16T04:35:14.990 回答
0

我尝试使用 Express 和 puppeteer 从 oauth 2.0 登录访问 access_token。

var express = require('express');
const puppeteer = require('puppeteer');
var app = express();
app.get('/', function(req, res) {
    run().then(() => console.log('Done')).catch(error => console.log(error));
    async function run(){
        const browser = await puppeteer.launch({headless: false});
        const page = await browser.newPage();
        await page.goto('https://abcd.com/authorize? 
audience=https://abcd.com&scope=openid%20email%20profile&client_id=abcd&response_type=token&redirect_uri=https://abcd.com/callback');
await new Promise(resolve => setTimeout(resolve, 5000));
    await page.focus('#email');
    await page.keyboard.type('abcd@gmail.com');
    await page.focus('#password');
    await page.keyboard.type('efghi');
    const waitForLoad = new Promise(resolve => page.on('load', () => resolve()));
    await page.evaluate(() => {
        document.querySelector('span[class="label"]').click();
    });
    await waitForLoad;
    console.log('Waiting to be redirected to the client.');
    const clientUrl = await page.evaluate(() => window.location.href);
        //1st the split is from when it encounters = in the url
    var split1 = clientUrl.split('=');
    //2nd split is when it encounters & in the 2nd object of the array
    var split2 = split1[1].split('&');
    //taking array in an object and conversing it to json
    var obj = {
      access_token: split2[0]
    }
    await browser.close();
    res.send(obj);
  };
});
app.listen(8000, function(){
    console.log('Heard on 8000');
});

这可以在邮递员上运行以使用接收到的访问令牌运行其他 api。

于 2020-02-18T09:43:15.280 回答