Private/Get-SnowAuthHeader.ps1

function Get-SnowAuthHeader {
    <#
    .SYNOPSIS
        Returns an Authorization header for the session, refreshing the OAuth token when near expiry.
    #>

    [CmdletBinding()]
    [OutputType([hashtable])]
    param([Parameter(Mandatory)][pscustomobject]$Session)

    if ($Session.AuthMethod -eq 'Basic') {
        $pair = '{0}:{1}' -f $Session.Credential.UserName, $Session.Credential.GetNetworkCredential().Password
        return @{ Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($pair)) }
    }
    if (-not $Session.AccessToken -or [datetime]::UtcNow -ge $Session.ExpiresAt.AddSeconds(-60)) {
        $token = Request-SnowOAuthToken -Session $Session
        $Session.AccessToken = $token.AccessToken
        $Session.ExpiresAt = $token.ExpiresAt
    }
    $plain = [System.Net.NetworkCredential]::new('', $Session.AccessToken).Password
    @{ Authorization = "Bearer $plain" }
}