Make SDK - Connection - Refresh Token - How to handle

The challenge is to know the timezone for "token_valid_until": "2022-08-24 20:54:18"

So, with the help from the Support Team from Make, they recommended using a JWT Decoder at data.token

The code

api-auth.imljson

{
    "token": {
        "condition": "{{if(data.token, data.expires < addMinutes(now, 1), true)}}",
        "url": "https://api2.eduzz.com/credential/generate_token",
        "method": "POST",
        "body": {
            "email": "{{ parameters.eduzz_email }}",
            "publickey": "{{ parameters.eduzz_publicKey }}",
            "apikey": "{{ parameters.eduzz_apiKey }}"
        },
        "type": "urlencoded",
        "response": {
            "data": {
                "expires": "{{ addSeconds(now, get(decodeJWT(body.data.token), 'payload.exp')) }}",
                "token": "{{body.data.token}}"
            }
        },
        "log": {
            "sanitize": [
                "request.body.email",
                "request.body.publickey",
                "response.body.token"
            ]
        }
    },
    "refresh": {
        "condition": "{{if(data.token, data.expires < addMinutes(now, 1), true)}}",
        "url": "https://api2.eduzz.com/credential/generate_token",
        "method": "POST",
        "body": {
            "email": "{{ parameters.eduzz_email }}",
            "publickey": "{{ parameters.eduzz_publicKey }}",
            "apikey": "{{ parameters.eduzz_apiKey }}"
        },
        "type": "urlencoded",
        "response": {
            "data": {
                "expires": "{{ addSeconds(now, get(decodeJWT(body.data.token), 'payload.exp')) }}",
                "token": "{{body.data.token}}"
            }
        },
        "log": {
            "sanitize": [
                "request.body.email",
                "request.body.publickey",
                "response.body.token"
            ]
        }
    },
    "info": {
        "url": "https://api2.eduzz.com/user/get_me",
        "method": "GET",
        "headers": {
            "token": "{{connection.token}}"
        },
        "response": {
            "metadata": {
                "value": "{{body.data[0].email}}",
                "type": "text"
            }
        },
        "log": {
            "sanitize": [
                "request.headers.token"
            ]
        }
    }
}

code.js for decodeJWT

function decodeJWT(t) {
    const [header, payload, sig] = t.split(".");
    return {
        "header": JSON.parse(Buffer.from(header, 'base64').toString()),
        "payload": JSON.parse(Buffer.from(payload, 'base64').toString()),
        "sig": sig
    };
}
1 Like