Как сгенерировать токен доступа с помощью токена обновления через SDK Google Диска в.NET?

У меня есть приложение.NET, которое использует Google Диск для доступа к файлу пользователя. Я могу получить код авторизации, и мне удалось обменять код авторизации с помощью AccessToken и RefreshToken. Проблема в том, что я не могу обновить токен доступа, и срок его действия истекает через час.

Аналогично этому вопросу:Как сгенерировать токен доступа с помощью токена обновления через API Google Диска? за исключением того, что я работаю в.NET (с использованием Google.API... DLL ).

Я знаю об этом:https://developers.google.com/accounts/docs/OAuth2InstalledApp#refreshоднако я ожидаю, что какой-то метод, доступный в объекте IAuthorizationState или OAuth2Authenticator, позволит мне обновить токен доступа.

Пожалуйста, порекомендуйте. Спасибо.

Обратите внимание, что с помощью этого кода я могу получить токен доступа. Просто я ожидаю, что этот код будет внутри Google API.

    public class OAuth2AccessTokenReponse
    {
        public string access_token;
        public int expires_in;
        public string token_type; 
    }
    public static string refreshAccessToken()
    {
        using (System.Net.WebClient client = new System.Net.WebClient())
        {
            byte[] response = client.UploadValues("https://accounts.google.com/o/oauth2/token", new System.Collections.Specialized.NameValueCollection(){
                {"client_id", ClientID},
                {"client_secret", ClientSecret},
                {"refresh_token", "XXXXX"},
                {"grant_type", "refresh_token"}
            });
            string sresponse = System.Text.Encoding.Default.GetString(response);
            OAuth2AccessTokenReponse o = (OAuth2AccessTokenReponse) Newtonsoft.Json.JsonConvert.DeserializeObject(sresponse, typeof(OAuth2AccessTokenReponse));
            return o.access_token;        
        }
    }

7
задан Community 23 May 2017 в 11:51
поделиться