Move the username to the credential for Basic accounts to better separate the authorization header generation
Add check for nil for authorizationHeader
Add client ID / client secret as a basic authorization header when fetching the access token
Tidy up the signature class
Fix for if the username or password is nil