3

I have seen a lot of questions about this with varying answers. Some are for different languages. It is not clear to me the correct way to handle this issue.

This is what I have come up with:

public bool Init()
{
    UserCredential credential;
    ClientSecrets secrets = new ClientSecrets()
    {
        ClientId = m_ClientID,
        ClientSecret = m_ClientSecret
    };

    if (!m_LogFilePathSet)
        return false;

    try
    {
        credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
            secrets,
            m_Scopes,
            "user",
            CancellationToken.None,
            new FileDataStore("MSAToolsSoftware.GMail.Application")).Result;

        if (credential.Token.IsExpired(Google.Apis.Util.SystemClock.Default))
        {
            var refreshResult = credential.RefreshTokenAsync(CancellationToken.None).Result;
        }

        var initializer = new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = m_ApplicationName
        };
        m_Service = new GmailService(initializer);
    }
    catch(Exception ex)
    {
        SimpleLog.Log(ex);
        return false;
    }

    return true;
}

Is this the correct way to refresh the access token (if required)?

Thank you.

Andrew Truckle
  • 17,769
  • 16
  • 66
  • 164

0 Answers0