Tuesday, August 22, 2023

Create access token from c sharp code and get it in dynamics 365 FO

C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Http;

namespace AY_AccessToken
{
    public class ClassAccessToken
    {
        private static string clientId = "2539b54-0891-4aad-99a6";
        private static string clientSecret = "H18Q~DntOA9aQX";
        private static string resource = "https://10devadevaos.axcloud.dynamics.com";
        private static HttpClient httpClient = new HttpClient();

        public static string GetAccessToken()
        {
            var content = new StringContent($"grant_type=client_credentials&client_id={clientId}&client_secret={clientSecret}&resource={resource}");
            content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/x-www-form-urlencoded");
            var response = httpClient.PostAsync("https://login.microsoftonline.com/bacbd475-b9da-43fa/oauth2/token", content).GetAwaiter().GetResult();
            var result = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
            string accessToken = result.Split(':')[1].Split(',')[0].Replace("\"", "");


            string search = "\"access_token\":\"";
            int start = result.IndexOf(search) + search.Length;
            int end = result.IndexOf("\"", start);
            string accessTokenFinal = result.Substring(start, end - start);
            return accessTokenFinal;
        }
    }
}


Dynamics 365 F&O code to get the token:

using AY_AccessToken;
internal final class RunnableClass1
{
    public static void main(Args _args)
    {
        str accessToken;
        accessToken = ClassAccessToken::GetAccessToken();
        info(accessToken);
    }
}