Dynamics crm 如何在MS Dynamics中扩展令牌

Dynamics crm 如何在MS Dynamics中扩展令牌,dynamics-crm,dynamics-crm-webapi,Dynamics Crm,Dynamics Crm Webapi,我正在使用以下代码对Dynamics进行身份验证: public async Task<String> GetAuthenticationToken(string uri, string clientId, string clientSecret) { AuthenticationParameters ap = AuthenticationParameters.CreateFromResourceUrlAsync(new Uri(uri)).Result; var creds =

我正在使用以下代码对Dynamics进行身份验证:

public async Task<String> GetAuthenticationToken(string uri, string clientId, string clientSecret)
{
AuthenticationParameters ap = 
AuthenticationParameters.CreateFromResourceUrlAsync(new Uri(uri)).Result;
var creds = new ClientCredential(clientId, clientSecret);
AuthenticationContext authContext = new AuthenticationContext(ap.Authority);
AuthenticationResult result = await 
authContext.AcquireTokenAsync(ap.Resource, creds);
return result.AccessToken;
}

问题是我不知道如何刷新令牌以便继续工作。我可以打一个简单的电话,让它再延长一个小时吗?

你可以这样做,对代码没有100%的把握,还没有测试过

 private static string GetToken(TraceWriter log)
    {
        lock (tokenlock)
        {
            if (DateTime.UtcNow >= ExpireDate)
            {

                var clientcred = new ClientCredential(clientId, clientSecret);
                AuthenticationContext authContext = new AuthenticationContext(aadInstance, false);
                AuthenticationResult result = authContext.AcquireToken(organizationUrl, clientcred);
                token = result.AccessToken;
                ExpireDate = result.ExpiresOn.DateTime;
                client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);
            }
            return token;
        }
    }

您使用.NET的web api有什么特殊原因吗?
 private static string GetToken(TraceWriter log)
    {
        lock (tokenlock)
        {
            if (DateTime.UtcNow >= ExpireDate)
            {

                var clientcred = new ClientCredential(clientId, clientSecret);
                AuthenticationContext authContext = new AuthenticationContext(aadInstance, false);
                AuthenticationResult result = authContext.AcquireToken(organizationUrl, clientcred);
                token = result.AccessToken;
                ExpireDate = result.ExpiresOn.DateTime;
                client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);
            }
            return token;
        }
    }