2012-03-19 16 views
18

Me gustaría ejecutar un FQL para recuperar todos los amigos del usuario de la aplicación.Ejecutar consulta FQL con facebook C# sdk v6.0.10

En versiones anteriores del SDK que se podría hacer con:

var client = new FacebookWebClient(); 
client.Query(String.Format("SELECT uid, name FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = {0})", me.id)); 

pero con la versión 6.0.10 no tengo idea de cómo puedo hacer lo mismo.

¿Alguna idea?

Respuesta

17

En realidad se puede obtener el mismo con el gráfico API llamada:

var client = new FacebookClient(); 
var query = string.Format("SELECT uid, name FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = {0})", me.id); 

dynamic parameters = new ExpandoObject(); 
parameters.q = query; 
dynamic results = client.Get("/fql", parameters); 
+0

¡Gracias! ¿Hay alguna forma de obtener el ID de Facebook del usuario como antes: FacebookWebContext.Current.UserID? – Diego

+1

En realidad, ¿dónde puedo encontrar documentación? porque todo es diferente ahora, y el sitio oficial no proporciona la documentación completa :( – Diego

+1

Parece que el nuevo lugar para el SDK (http://csharpsdk.org/) no tiene una documentación completa, solo los conceptos básicos. La nueva documentación es solo algo en progreso ... Por ahora puede profundizar en el código para obtener más información y crear un archivo de ayuda (hay una documentación "archivo de proyecto" (para [Sandcastle Help File Builder] (http: // shfb) .codeplex.com /)) ubicado en la carpeta 'Build' de las fuentes del SDK –

25

FQL

var fb = new FacebookClient("access_token"); 
dynamic result = fb.Get("fql", 
    new { q = "SELECT uid FROM user WHERE uid=me()" }); 

FQL múltiples consultas

var fb = new FacebookClient("access_token"); 
dynamic result = fb.Get("fql", new 
    { 
     q = new[] 
       { 
        "SELECT uid from user where uid=me()", 
        "SELECT name FROM user WHERE uid=me()" 
       } 
    }); 

FQL llamado multi-consulta

var fb = new FacebookClient("access_token"); 
dynamic result = fb.Get("fql", 
    new 
     { 
      q = new 
      { 
       id = "SELECT uid from user where uid=me()", 
       name = "SELECT name FROM user WHERE uid " + 
       "IN (SELECT uid FROM #id)", 
      } 
     });