Пример #1
0
        private async Task <ExpiringAccessToken> RefreshAccessToken(string oauthId)
        {
            var installationData = await GetInstallationDataAsync(oauthId);

            var dataContent = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair <string, string>("grant_type", "client_credentials"),
                new KeyValuePair <string, string>("scope", "send_notification")
            });

            var credentials =
                Encoding.ASCII.GetBytes(
                    $"{installationData.oauthId}:{installationData.oauthSecret}");

            _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
                                                                                            Convert.ToBase64String(credentials));

            var tokenResponse = await _httpClient.PostAsync(new Uri(installationData.tokenUrl),
                                                            dataContent);

            var accessToken = JsonConvert.DeserializeObject <AccessToken>(await tokenResponse.Content.ReadAsStringAsync());

            var expiringAccessToken = new ExpiringAccessToken
            {
                Token = accessToken,
                ExpirationTimeStamp = DateTime.Now + TimeSpan.FromTicks((accessToken.expires_in - 60) * 1000)
            };

            await _database.StringSetAsync($"{oauthId}:token", JsonConvert.SerializeObject(expiringAccessToken));

            return(expiringAccessToken);
        }
Пример #2
0
 private bool IsExpired(ExpiringAccessToken accessToken)
 {
     return(accessToken == null || accessToken.ExpirationTimeStamp < DateTime.Now);
 }