Скрипт предварительного запроса почтальона для авторизации токена на предъявителя - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь создать скрипт для генерирования моего токена на предъявителя аутентификации для коллекций. поэтому мне не нужно каждый раз передавать токен, и я буду наследовать auth от parent. Но я не знаю, где я ошибаюсь в сценарии, я не могу сгенерировать токен, и он выдаёт мне ошибку

There was an error in evaluating the Pre-request Script:  Error: No data, empty input at 1:1 ^

Вот мой сценарий,

var expiresOn = pm.variables.get('ExpiresOn');
    if (!expiresOn || new Date(expiresOn) <= new Date()) {

    var clientId = '565v7677676vfdrd';
    var apiToken =  '6565fdvdrdfd';

    var request = {
        url: 'http://.../auth/token',
        method: 'POST',
        header: 'Content-Type:application/Json',
        body: {
            mode: 'application/json',
            raw:  clientId + apiToken
        }
    };
            }
        };

        pm.sendRequest(request, function (err, res) {
            if (res !== null) {
                var json = res.json();
                pm.environment.set('Access_Token', json.access_token)

                var expiresOn = new Date(0);
                expiresOn.setUTCSeconds(json.expires_on);
                pm.environment.set('ExpiresOn', expiresOn);
            }
        });
    }

1 Ответ

0 голосов
/ 09 ноября 2019

const echoPostRequest = {
  url: 'https://example.com/sign_in?client_id=dbdsA8b6V6Lw7wzu1x0T4CLxt58yd4Bf',
  method: 'POST',
  header: 'Accept: application/json\nUser-Agent: Example/2019.10.31-release (Android 6.0.1; LGE Nexus 5)\nUDID: 1d2c7e65f34b3882f8e42ab8d6a82b4b\nContent-Type: application/json; charset=utf-8\nHost: api-mobile.example.com',
  body: {
    mode: 'application/json',
    raw: JSON.stringify(
        {
        	client_id:'dbdsA8b6V6Lw7wzu1x0T4CLxt58yd4Bf',
        	client_secret:'aBK1xbehZvrBw0dtVYNY3BuJJOuDFrYs',
        	auth_method:'password',
        	create_if_not_found:false,
        	credentials:{identifier:'username',password:'pass'},
        	signature:'2:a899cdc0'
        })
  }
};

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(echoPostRequest, 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());
        }
    });
}
Приведенный выше пример представляет собой сценарий предварительного запроса Почтальона для получения access_token и времени истечения токена. Я думаю, что этот пример поможет вам решить проблему. Пожалуйста, проверьте консоль почтальона Откройте Консоль почтальона, нажав Ctrl + Alt + C в Windows (Cmd + Alt + C в Mac)

enter image description here

...