functions/other/Import-ADALToken.ps1

function Import-AccessToken{ 
    param( 
        [Parameter(Position=0, Mandatory=$false)] [string]$MailboxName,
        [Parameter(Position=1, Mandatory=$false)] [string]$ClientId,
        [Parameter(Position=2, Mandatory=$false)] [string]$AccessToken,
        [Parameter(Position=3, Mandatory=$false)] [string]$RefreshToken,
        [Parameter(Position=4, Mandatory=$false)] [string]$ResourceURL,
        [Parameter(Position=5, Mandatory=$false)] [string]$redirectUrl,
        [Parameter(Position=6, Mandatory=$false)] [switch]$Beta
    )  
     Begin
         {
            $JsonObject = "" | Select token_type,scope,expires_in,ext_expires_in,expires_on,not_before,resource,access_token,clientid,redirectUrl
        $Decoded =  Invoke-DecodeToken -Token $AccessToken
            $JsonObject.access_token = $AccessToken
            
            if(![String]::IsNullOrEmpty($RefreshToken)){
                Add-Member -InputObject $JsonObject -NotePropertyName refresh_token -NotePropertyValue (Get-ProtectedToken -PlainToken $RefreshToken) 
            }    
            if([bool]($JsonObject.PSobject.Properties.name -match "access_token")){
                $JsonObject.access_token =  (Get-ProtectedToken -PlainToken $JsonObject.access_token) 
            }
            $JsonObject.token_type = "Bearer"
            $JsonObject.scope = $Decoded.claims.scp
            $JsonObject.expires_on = $Decoded.claims.exp
            $JsonObject.not_before = $Decoded.claims.nbf
            $JsonObject.resource = $Decoded.claims.aud
            $JsonObject.clientid = $Decoded.claims.appid
            if($Beta.IsPresent){
                 Add-Member -InputObject $JsonObject -NotePropertyName Beta -NotePropertyValue True
            }
            return $JsonObject
         }
}