2011-10-08 13 views
6

en facebook theres FQL este código¿Cómo me puedo hacer FQL lotes facebook en Java

https://developers.facebook.com/docs/reference/api/batch/ 


curl \ 
    -F 'access_token=…' \ 
    -F 'batch=[ \ 
      {"method": "GET", "relative_url": "me"}, \ 
      {"method": "GET", "relative_url": "me/friends?limit=50"} \ 
     ]'\ 
    https://graph.facebook.com 

se supone que deba enviarse con JSON pero realmente no entiendo cómo hacer esto ayuda?

gracias

+0

¿Puede ser más preciso en su pregunta? ¿Qué has intentado, qué esperabas y cuál fue el resultado? ¿Has probado el comando anterior? ¿Falló? ¿tienes curl instalado? ¿Respondió? ¿Qué obtuviste? ¿Qué mensaje de error ves? –

Respuesta

3

Usted puede utilizar el sencillo BatchFB API es muy potente y fácil, usted no tiene que lidiar hará todas estas cosas y utilizar la FQL por ejemplo para llamar a todos tus amigos

Later<ArrayNode> friendsArrayList = this.Batcher.query("SELECT uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())"); 
    for (JsonNode friend : friendsArrayList.get()) { 
      ....... 
     } 

y su lote

2

creo que su pregunta es cómo ejecutar una solicitud por lotes utilizando API de Facebook Graph. Para ello se tiene que emitir una solicitud POST a

"https://graph.facebook.com" 

y los datos de correos que se envíen deben ser

"batch=[{'method': 'GET', 'relative_url': 'me'}, {'method': 'GET', 'relative_url': 'me/friends?limit=50'}]&[email protected]" 

en su caso [@accesstoken debe ser sustituido por el acceso del valor del testigo].

Esta solicitud devolverá los detalles del propietario del token de acceso (normalmente el usuario registrado actual) y una lista de 50 amigos de Facebook (contiene id y campos de nombre) del usuario junto con los encabezados de página (puede omitirse)

No estoy seguro de si se refería a Java o Javascript. Por favor sea específico en eso.

Básicamente soy un programador de C#. Le proporcionará un código para ejecutar la solicitud anterior en C# aquí.

WebRequest webRequest = WebRequest.Create("https://graph.facebook.com"); 
webRequest.Method = "POST"; 
webRequest.ContentType = "application/x-www-form-UrlEncoded"; 
byte[] buffer = Encoding.UTF8.GetBytes("batch=[{'method': 'GET', 'relative_url': 'me'}, {'method': 'GET', 'relative_url': 'me/friends?limit=50'}]&[email protected]"); 
webRequest.ContentLength = buffer.Length; 
using (Stream stream = webRequest.GetRequestStream()) 
{ 
    stream.Write(buffer, 0, buffer.Length); 
    using (WebResponse webResponse = webRequest.GetResponse()) 
    { 
     if (webResponse != null) 
     { 
      using (StreamReader streamReader = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8)) 
      { 
       string data = streamReader.ReadToEnd(); 
      } 
     } 
    } 
} 

Aquí los datos variables contendrá el resultado.

1

Salah, este es el ejemplo que uso como referencia, lo siento aunque no recuerdo dónde encontré.

FB.api("/", "POST", { 
    access_token:"MY_APPLICATION_ACCESS_TOKEN", 
    batch:[ 
     { 
      "method":"GET", 
      "name":"get-photos", 
      "omit_response_on_success": true, 
      "relative_url":"MY_ALBUM_ID/photos" 
     }, 
     { 
      "method": "GET", 
      "depends_on":"get-photos", 
      "relative_url":"{result=get-photos:$.data[0].id}/likes" 
     } 
    ] 
}, function(response) { 
    if (!response || response.error) { 
     console.log(response.error_description); 
    } else {  
     /* Iterate through each Response */ 
     for(var i=0,l=response.length; i<l; i++) { 
      /* If we have set 'omit_response_on_success' to true in the Request, the Response value will be null, so continue to the next iteration */ 
      if(response[i] === null) continue; 
      /* Else we are expecting a Response Body Object in JSON, so decode this */ 
      var responseBody = JSON.parse(response[i].body); 
      /* If the Response Body includes an Error Object, handle the Error */ 
      if(responseBody.error) { 
       // do something useful here 
       console.log(responseBody.error.message); 
      } 
      /* Else handle the data Object */ 
      else { 
       // do something useful here 
       console.log(responseBody.data); 
      } 
     } 
    } 
}); 
Cuestiones relacionadas