public async Task DoGoogleLogin() { _client.AuthType = AuthType.Google; GoogleLogin.TokenResponseModel tokenResponse = null; if (_client.Settings.GoogleRefreshToken != string.Empty) { tokenResponse = await GoogleLogin.GetAccessToken(_client.Settings.GoogleRefreshToken); _client.AuthToken = tokenResponse?.id_token; } if (_client.AuthToken == null) { var deviceCode = await GoogleLogin.GetDeviceCode(); GoogleDeviceCodeEvent?.Invoke(deviceCode.user_code, deviceCode.verification_url); tokenResponse = await GoogleLogin.GetAccessToken(deviceCode); _client.Settings.GoogleRefreshToken = tokenResponse?.refresh_token; _client.AuthToken = tokenResponse?.id_token; } await SetServer(); }
public async Task <string> GetAccessToken() { TokenResponseModel tokenResponse; if (!string.IsNullOrEmpty(_settings.GoogleRefreshToken)) { tokenResponse = await GetAccessToken(_settings.GoogleRefreshToken); if (!string.IsNullOrEmpty(tokenResponse?.id_token)) { return(tokenResponse?.id_token); } } var deviceCode = await GetDeviceCode(); if (deviceCode?.user_code == null || deviceCode?.verification_url == null) { throw new GoogleOfflineException(); } GoogleDeviceCodeEvent?.Invoke(deviceCode.user_code, deviceCode.verification_url); tokenResponse = await GetAccessToken(deviceCode); _settings.GoogleRefreshToken = tokenResponse?.refresh_token; return(tokenResponse?.id_token); }