2011-01-24 14 views
6

Attualmente sto usando l'API di Facebook e C#.C# e Facebook API

Quello che sto cercando di fare è caricare un'immagine su un evento.

Ho provato due metodi, ma nessuno dei due sembra funzionare. Qualcuno potrebbe per favore dare un'occhiata.

Metodo 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); 

Metodo 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); 

Metodo 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); 

Nel metodo 3 sto cercando di crea la risposta e scrivilo. Sto ricevendo 400 cattive richieste.

L'immagine 'test.jpg' si trova attualmente nella radice del mio sito Web, come nella pagina che la chiama.

+1

Quando dici che non funziona, ricevi qualche errore? –

+0

400 richiesta errata per il metodo 1, il metodo 2 viene eseguito solo ma non ottengo alcuna immagine su Facebook. Spero che questo ti aiuti. – Robert

+0

La seguente domanda potrebbe essere d'aiuto: http://stackoverflow.com/questions/4210746/c-facebook-graph-how-to-upload-to-album-id. –

risposta

1

Ehi Robert, non sono sicuro se questo è ciò che lo sta causando, ma nell'esempio 1 sembra che tu stia cercando di usare una stringa letterale sul nome JPG, ma in tal caso, il simbolo @ deve essere al di fuori delle virgolette ...

@ "buongiorno" // una stringa letterale

0

sembra che si sta solo passando il nome del file della foto da caricare. Stai usando una libreria che leggerà i contenuti delle foto dal disco? In caso contrario, dovrai farlo tu stesso e scrivere i contenuti alla richiesta.

Il formato per scrivere i contenuti delle foto per la richiesta dipenderà dalle aspettative dell'API che si sta scrivendo (in più parti, ecc.).

+0

Questo è il metodo 2 che sta provando a fare. – Robert

+0

@Robert - Nel metodo 2, non vedo dove si sta effettivamente scrivendo il contenuto del file. Vedo scrivere il nome del file, ma in realtà non scrivere il contenuto del file. –