none
Tomando datos de facebook RRS feed

  • Pregunta

  • comento mi problema, disculpen si soy algo confusa pero no se explicarlo con escritura

    hice un codigo para consola con c# que funciona bien, me da los datos de id usuario y el nombre y el mail

    pero cuando quiero pasarlo a un winform o un webform se queda trabado el codigo

    muestro el codigo para consola

    public class Program
        {
            public static void Main(string[] args)
            {
                var facebookClient = new face.FacebookClient();
                var facebookService = new FacebookService(facebookClient);
                var getAccountTask = facebookService.GetAccountAsync(FacebookSettings.AccessToken);
                Task.WaitAll(getAccountTask);
                var account = getAccountTask.Result;
                Console.WriteLine($"{account.Id} {account.Name} {account.Email} ");
    
                var postOnWallTask = facebookService.PostOnWallAsync(FacebookSettings.AccessToken,"Hola a todos");
                Task.WaitAll(postOnWallTask);
            }
        }

    Esto funciona bien, cuando es un proyecto de consola, pero cuando quiero un proyecto winform o webform al meter este codigo dentro de un boton se queda retenido en la linea

    Task.WaitAll(getAccountTask);

    les pongo la interfaz, porque realmente no entiendo el problema, encima no puedo encontrar documentacion de c# con la api de facebook

    public interface IFacebookClient
        {
            Task<T> GetAsync<T>(string accessToken, string endpoint, string args = null);
            Task PostAsync(string accessToken, string endpoint, object data, string args = null);
        }
    
        public class FacebookClient : IFacebookClient
        {
            private readonly HttpClient _httpClient;
            private string lStrAccessToken;
    
            public FacebookClient()
            {
                _httpClient = new HttpClient
                {
                    BaseAddress = new Uri("https://graph.facebook.com/v5.0/")
                };
                _httpClient.DefaultRequestHeaders
                    .Accept
                    .Add(new MediaTypeWithQualityHeaderValue("application/json"));
            }
    
            public FacebookClient(string lStrAccessToken)
            {
                this.lStrAccessToken = lStrAccessToken;
            }
    
            public async Task<T> GetAsync<T>(string accessToken, string endpoint, string args = null)
            {
                var response = await _httpClient.GetAsync($"{endpoint}?access_token={accessToken}&{args}");
                if (!response.IsSuccessStatusCode)
                    return default(T);
    
                var result = await response.Content.ReadAsStringAsync();
    
                return JsonConvert.DeserializeObject<T>(result);
            }
    
            internal dynamic GetAsync(string v)
            {
                throw new NotImplementedException();
            }
    
            public async Task PostAsync(string accessToken, string endpoint, object data, string args = null)
            {
                var payload = GetPayload(data);
                await _httpClient.PostAsync($"{endpoint}?access_token={accessToken}&{args}", payload);
            }
    
            private static StringContent GetPayload(object data)
            {
                var json = JsonConvert.SerializeObject(data);
    
                return new StringContent(json, Encoding.UTF8, "application/json");
            }
    
            internal dynamic PostAsync(dynamic dynamic, dynamic parameters)
            {
                throw new NotImplementedException();
            }
        }

    Si me pueden ayudar, gracias

    martes, 12 de noviembre de 2019 5:19

Todas las respuestas