Trying to use 'Postman' and having trouble

2019-03-12 09:48发布

I have an API endpoint that I am trying to test with the google app: 'Postman'. I need to set the headers which use 'Basic authentication'. I am not sure what should go in 'Header: Value'

This is how the admin said the headers should be set: "The head value is the word 'Basic' followed by your org name and your Api key separated by a colon and base64 encoded."

I have tried numerous things but I am not getting it quite right. The error I get is "Message: Token not set".

标签: rest api postman
4条回答
甜甜的少女心
2楼-- · 2019-03-12 10:08

It's 2019 and with Version 6.5.3 we have a separate tab to use different kind of Authentication techniques.

For basic auth you just have to give username and password after selecting "Basic Auth" under Authentication tab

enter image description here

查看更多
\"骚年 ilove
3楼-- · 2019-03-12 10:19

Your header field should look like this:

Header : Authorization

Value : Basic base64('YourOrgName:YourAPIKEY');

You can get the base64 value of your string here:

https://www.base64encode.org/

For example, for my-org-name:123key4api it should be bXktb3JnLW5hbWU6MTIza2V5NGFwaQ==.

The complete header would look like:

Authorization: Basic bXktb3JnLW5hbWU6MTIza2V5NGFwaQ==

查看更多
别忘想泡老子
4楼-- · 2019-03-12 10:23

Looks like you are facing trouble in getting the base64 value. Well you can make use of in-built function in Javscript as below.

Simply run below code in any JS runtime, (Simplest would be - open console tab in chrome developer tool)

"username:password!" // Here I used basic Auth string format

// Encode the plain string to base64
btoa("username:password!"); // output: "dXNlcm5hbWU6cGFzc3dvcmQh"


// Decode the base64 to plain string
atob("dXNlcm5hbWU6cGFzc3dvcmQh"); // output: "username:password!"
查看更多
forever°为你锁心
5楼-- · 2019-03-12 10:27

Putting it all together in a pre-request script (and then use the access_token for oauth).

    var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f<e.length){n=e.charCodeAt(f++);r=e.charCodeAt(f++);i=e.charCodeAt(f++);s=n>>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(f<e.length){s=this._keyStr.indexOf(e.charAt(f++));o=this._keyStr.indexOf(e.charAt(f++));u=this._keyStr.indexOf(e.charAt(f++));a=this._keyStr.indexOf(e.charAt(f++));n=s<<2|o>>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/\r\n/g,"\n");var t="";for(var n=0;n<e.length;n++){var r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r)}else if(r>127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n<e.length){r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r);n++}else if(r>191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}};

    var userPass = pm.environment.get("oauth_key") + ':' + pm.environment.get("oauth_secret")

    pm.sendRequest({
          url:  pm.environment.get("basepath")+"/oauthpreview/token", 
          method: 'POST',
          header: {
            'Accept': 'application/json',
            'cache-control':"no-cache",
            'Authorization' : 'Basic ' + Base64.encode(userPass),
            'Content-Type': 'application/x-www-form-urlencoded'
          },
          body: {
              mode: 'urlencoded',
              urlencoded: [
                {key: "grant_type", value: "client_credentials", disabled: false}
            ]
          }
      }, function (err, res) {
            pm.environment.set("access_token", res.json().access_token);
      })
查看更多
登录 后发表回答