Private/PartnerActions/New-CustomPartnerAccessToken.ps1

function New-CustomPartnerAccessToken() {
    param(
        [Parameter(Mandatory)]
        [String]
        $Scopes,
        [Parameter(Mandatory)]
        [String]
        $CustomerTenantId
    )

    begin {
        if (!$SAMTokens) {
            $SAMTokens = Get-SAMTokens
        }  
    }
    process {

        # Connect to the partner center using our application
        $RequestBody = @{
            client_id     = $SAMTokens.ApplicationId
            client_secret = $SAMTokens.ApplicationSecret
            grant_type    = "refresh_token"
            refresh_token = $SAMTokens.RefreshToken
            scope         = $Scopes
        }
        $authEndpoint = "https://login.microsoftonline.com/$($CustomerTenantId)/oauth2/v2.0/token"

        # Get the access token needed for subsequent requests
        try {
            $AccessToken = ((Invoke-WebRequest -Uri $authEndpoint -Method POST -Body $RequestBody -ContentType 'application/x-www-form-urlencoded').Content | ConvertFrom-Json).access_token
        } catch {
            Write-Error "Failed to get access token: $_"
        }

    
        return $AccessToken 

    }
}