2011-01-24 21 views
6

Actualmente estoy usando la API de Facebook y C#.C# & Facebook API

Lo que intento hacer es subir una imagen a un evento.

He intentado dos métodos, pero ninguno parece funcionar. ¿Podría alguien echar un vistazo.

Método 1

 Dictionary<string, string> args = new Dictionary<string, string>(); 
     string source = "@test.jpg"; 
     string relpath = "/1234456789/photos"; 
     args.Add("message", "sssssss"); 
     args.Add("access_token", api.AccessToken); 
     args.Add("source", source); 
     api.Post(relpath, args); 

Método 2

 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(String.Format("http://graph.facebook.com/1234456789/photos")); 
     request.ContentType = "multipart/form-data"; 
     request.Method = "POST"; 

     string path = HttpUtility.UrlEncode("test.jpg"); 
     request.BeginGetRequestStream(ar => 
     { 
      using (StreamWriter writer = new StreamWriter((ar.AsyncState as HttpWebRequest).EndGetRequestStream(ar))) 
      { 
       writer.Write("{0}={1}&", "message", HttpUtility.UrlEncode("Test")); 
       writer.Write("{0}[email protected]{1}&", "source", path); 
       writer.Write("{0}={1}", "access_token", 
        api.AccessToken); 
      } 
     }, request); 

Método 3

 WebClient client = new WebClient(); 

     byte[] responseBinary = client.UploadFile("http://localhost:61689/Widgets/test2.aspx", "POST", @"C:\test.jpg"); 

     string response = Encoding.UTF8.GetString(responseBinary); 

     Dictionary<string, string> args = new Dictionary<string, string>(); 

     string relpath = "https://graph.facebook.com/me/picture"; 
     args.Add("message", "sssssss"); 
     args.Add("access_token", GetAccessToken(code)); 
     args.Add("source", response); 

     api.Post(relpath, args); 

En el método 3 Estoy intentando crea la respuesta y escribe eso. Estoy recibiendo 400 malas solicitudes.

La imagen 'test.jpg' actualmente se encuentra en la raíz de mi sitio web, igual que la página que lo llama.

+1

Cuando dices que no funciona, ¿obtienes algún error? –

+0

400 solicitud incorrecta para el método 1, el método 2 simplemente se ejecuta pero no obtengo ninguna imagen en Facebook. Espero que esto ayude. – Robert

+0

La siguiente pregunta puede ser de ayuda: http://stackoverflow.com/questions/4210746/c-facebook-graph-how-to-upload-to-albumid. –

Respuesta

1

Hola Robert, no estoy seguro de si esto es lo que está causando, pero en el ejemplo 1 parece que estás tratando de usar una cadena literal en el nombre JPG, pero si es así, el símbolo @ debe estar fuera de las comillas ...

@ "buenos días" // una cadena literal

0

parece que solo salen el nombre del archivo de la foto que desea cargar. ¿Estás usando una biblioteca que leerá el contenido real de la foto desde el disco? De lo contrario, deberá hacerlo usted mismo y escribir el contenido de la solicitud.

El formato para escribir los contenidos de la foto en la solicitud dependerá de las expectativas de la API en la que está escribiendo (varias partes, etc.).

+0

Eso es lo que el método 2 está tratando de hacer. – Robert

+0

@Robert: en el método 2, no veo dónde estás escribiendo el contenido del archivo. Veo escribiendo el nombre del archivo, pero no escribiendo el contenido del archivo. –