Как обновить Google OAuth2 AccessToken - PullRequest
3 голосов
/ 13 июня 2019

Я видел много вопросов по этому поводу с различными ответами.Некоторые для разных языков.Мне не ясно, как правильно решить эту проблему.

Вот что я придумал:

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;
}

Это правильный способ обновить токен доступа (еслитребуется)?

Спасибо.

...