functions/Connect-OneLogin.ps1

function Connect-OneLogin
{
    [CmdletBinding()]
    [OutputType([OneLogin.Token])]
    param
    (
        [Parameter(Mandatory)]
        [System.Management.Automation.Credential()]
        [PSCredential]
        $Credential,

        [Parameter(Mandatory)]
        [OneLogin.AdminRegion]
        $Region
    )
    
    $ID = $Credential.UserName
    $Secret = $Credential.GetNetworkCredential().Password
    $ApiBase = "https://api.$Region.onelogin.com"
    $Endpoint = "auth/oauth2/token"
    $AuthHeader = @{ Authorization = "client_id:$ID, client_secret:$Secret" }

    $Body = @{ grant_type = "client_credentials" } | ConvertTo-Json
    
    $Splat = @{
        Uri         = "$ApiBase/$EndPoint"
        Headers     = $AuthHeader
        Body        = $Body
        Method      = 'Post'
        ContentType = 'application/json'
    }

    $OutputType = $PSCmdlet.MyInvocation.MyCommand.OutputType.Type
    $Script:Token = Invoke-RestMethod @Splat |
        Select-Object -ExpandProperty Data |
        ConvertTo-OneLoginObject -OutputType $OutputType
    $Script:Token.ApiBase = $ApiBase
}