Beispiel #1
0
        private async Task <FacebookAccessTokenInfo> GetAccessTokenInfo(OAuthAccessToken token)
        {
            using (HttpClient client = new HttpClient())
            {
                var url = "https://graph.facebook.com/debug_token";
                url += $"?input_token={token.AccessToken}";
                url += $"&access_token={token.AccessToken}";

                var result = await client.GetAsync(url);

                if (!result.IsSuccessStatusCode)
                {
                    return(null);
                }

                var content = await result.Content.ReadAsStringAsync();

                var response = JsonConvert.DeserializeObject <FacebookAccessTokenInfoResponse>(content, new JsonSerializerSettings {
                    ContractResolver = new DefaultContractResolver {
                        NamingStrategy = new SnakeCaseNamingStrategy()
                    }
                });

                return(response.Data);
            }
        }
Beispiel #2
0
        public async Task <IOAuthUserInfo> GetUserInfoAsync(OAuthAccessToken token)
        {
            var facebookInfo = await GetAccessTokenInfo(token);

            if (facebookInfo == null)
            {
                return(null);
            }

            return(await GetUserInfoAsync(facebookInfo.UserId, token));
        }
Beispiel #3
0
        public async Task <IOAuthUserInfo> GetUserInfoAsync(OAuthAccessToken token)
        {
            using (HttpClient client = new HttpClient())
            {
                client.DefaultRequestHeaders.Add("Authorization", $"{token.TokenType} {token.AccessToken}");

                var response = await client.GetAsync("https://openidconnect.googleapis.com/v1/userinfo");

                if (!response.IsSuccessStatusCode)
                {
                    return(null);
                }

                var content = await response.Content.ReadAsStringAsync();

                return(JsonConvert.DeserializeObject <GoogleUserInfo>(content, new JsonSerializerSettings {
                    ContractResolver = new DefaultContractResolver {
                        NamingStrategy = new SnakeCaseNamingStrategy()
                    }
                }));
            }
        }
Beispiel #4
0
        private async Task <IOAuthUserInfo> GetUserInfoAsync(string userId, OAuthAccessToken token)
        {
            using (HttpClient client = new HttpClient())
            {
                var url = $"https://graph.facebook.com/v3.2/{userId}";
                url += $"?access_token={token.AccessToken}";
                url += "&fields=first_name,last_name,name,picture";
                var result = await client.GetAsync(url);

                if (!result.IsSuccessStatusCode)
                {
                    return(null);
                }

                var content = await result.Content.ReadAsStringAsync();

                return(JsonConvert.DeserializeObject <FacebookUserInfo>(content, new JsonSerializerSettings {
                    ContractResolver = new DefaultContractResolver {
                        NamingStrategy = new SnakeCaseNamingStrategy()
                    }
                }));
            }
        }
Beispiel #5
0
        private IEnumerable <Microsoft.AspNetCore.Authentication.AuthenticationToken> GenerateAuthenticationTokens(OAuthAccessToken token)
        {
            var authTokens = new List <Microsoft.AspNetCore.Authentication.AuthenticationToken>();

            if (token != null)
            {
                if (!string.IsNullOrWhiteSpace(token.AccessToken))
                {
                    authTokens.Add(new Microsoft.AspNetCore.Authentication.AuthenticationToken
                    {
                        Name  = "access_token",
                        Value = token.AccessToken
                    });
                }

                if (!string.IsNullOrEmpty(token.TokenType))
                {
                    authTokens.Add(new Microsoft.AspNetCore.Authentication.AuthenticationToken {
                        Name = "token_type", Value = token.TokenType
                    });
                }

                if (token.ExpiresIn > 0)
                {
                    var expiresAt = DateTime.UtcNow + TimeSpan.FromSeconds(token.ExpiresIn);
                    authTokens.Add(new Microsoft.AspNetCore.Authentication.AuthenticationToken
                    {
                        Name  = "expires_at",
                        Value = expiresAt.ToString("o", CultureInfo.InvariantCulture)
                    });
                }
            }

            return(authTokens);
        }