2011-12-13 13 views
11

Ho bisogno di assistenza per ottenere i Mi piace degli utenti di stream items via FQL. Ho alcuni di quelli che tornano, ma non riesco a capire come ottenere gli altri. Per access_token, ogni permission is granted.Come ottenere gli elementi dei flussi degli utenti tramite FQL (post, commenti, immagini, collegamenti, ecc.)


Lasciate che vi mostri quello che ho potuto fare:

messaggi Mi è piaciuto il Pagina alimenta:

fql?q=Select post_id, source_id, message FROM stream where source_id in (SELECT target_id FROM connection WHERE source_id=me() and is_following=1) AND likes.user_likes=1 LIMIT 10 Nota: questo ha funzionato a partire dal metà dicembre 2011, quando è stata pubblicata la domanda originale. Ora (metà febbraio 2012) non viene più restituito qualcosa di simile ai contenuti di streaming da una pagina.

messaggi Mi è piaciuto di post che ho pubblicato:

fql?q=Select post_id, source_id, message FROM stream where source_id=me() AND likes.user_likes=1 LIMIT 10


Ecco cosa mi manca

messaggi Mi è piaciuto il Pareti degli amici:

fql?q=Select post_id, source_id, message FROM stream where source_id in (SELECT uid1 FROM friend WHERE uid2=me()) AND likes.user_likes=1 & LIMIT 5000

messaggi Mi è piaciuto il eventi muri:

????

messaggi Mi è piaciuto il gruppi muri:

????

risposta

-2

Questo non è possibile con GraphAPI. Lo GraphAPI ti permetterà di vedere le pagine che un utente ha gradito con /me/likes, ma non ti darà un elenco di tutti gli articoli postati sul muro dell'utente che hanno gradito.

È possibile visualizzare i dettagli al riguardo nel Facebook Documentation.

Non ho esperienza con FQL come elencato nella domanda, ma una domanda Stack Overflow sembra fornire una risposta alla tua domanda.

See: Facebook API - "All my likes" query

ha funzionato perfettamente in fase di test.

+0

Come notato nella mia interrogazione, posso ottenere * * ** tre sottoinsiemi ** di Mi piace usando FQL (FQL è accessibile usando l'API Graph, prova tu stesso nel grafico API explorer). Ho solo bisogno di ottenere i 2 set mancanti di Mi piace come ho documentato nella domanda. – DMCS

+1

Hai avuto la possibilità di provare le tre query che effettivamente restituiscono gli elementi del flusso graditi? FWIW, il me/likes che ho già documentato nella domanda originale per il ritorno di pagine e altri oggetti ... solo non flusso di elementi che sono stati graditi – DMCS

0

@Jeff Sherlock, un ingegnere partner di Facebook, dice here che 'non è possibile richiamare tutti i Mi piace di una persona che utilizza la piattaforma fb. Lo limitiamo a attori, film, squadre sportive, ecc. Per motivi di privacy. " So che non ha molto senso dal momento che è possibile interrogare tutti i tipi di altre cose con l'API di Facebook.Ti suggerirei di fare una foto ad Ashton Kutcher e provare a interrogare sul suo tavolo simile ... Aspetta, hai bisogno del suo permesso; ]

+2

"Ti suggerirei la foto di Ashton Kutcher e provare a interrogare sulla sua tabella simile ... Aspetta, hai bisogno del suo permesso "Non sto cercando di interrogare la tabella simile a qualcuno * altro * di quella di un utente ** autenticato ** che ha accettato ogni permesso possibile. Questa app, che ho ereditato, consente a un utente di apprezzare/a differenza degli elementi di streaming in Facebook. Attualmente non memorizza questo perché immagina che Facebook sarebbe in grado di restituire quei dati. Ora che è stato consegnato a me, sta iniziando a sembrare che dovremo immagazzinare qualcosa di simile dalla nostra parte quando un utente apprezza qualcosa tramite la nostra interfaccia utente. – DMCS

+0

Il suggerimento con Ashton Kutcher è stato solo un po 'divertente - sry. Il mio vero suggerimento è: attenersi al piano e memorizzare gli utenti e i loro simili nel database. – borisdiakur

+1

Non ho fornito abbastanza contesto nella mia risposta. Ho aggiornato la risposta per avere più senso. Mi riferisco agli oggetti grafici aperti che una persona ha gradito. Se vai su cnn.com e "mi piace" su un articolo, non lo restituiamo nel punto medio di Mi piace nell'API Graph. –

0

Il problema è che la tabella simile restituisce un post_id vuoto per tutto. Tuttavia, restituisce un object_id per i tuoi Mi piace.

si può mettere tutti questi object_ids in una stringa separati da virgola, quindi inviare una chiamata API grafico con? Id = objectid1, objectid2, objectid3 ecc

Questo sarà quindi restituire tutti gli oggetti che trova. In questo modo puoi ottenere il Mi piace per gli elementi del flusso.

Sembra tornare indietro di circa 4 settimane. Non riesco a farlo andare più lontano di questo.

Per inciso, una cosa che troverete è che i commenti graditi vengono anche restituiti come object_ids nella tabella simile. Tuttavia, non sembra esserci alcun modo per scoprire i dettagli dell'oggetto di questi object_ids. Un po 'di mistero con questi.

+0

Ah, interessante. Ho intenzione di ricercare ulteriormente. – DMCS

0

Se leggete la documentazione like tavolo, post_id campo ha una nota che recita:

Questi ID posta devono essere interrogati dalla tabella flusso FQL.

Pertanto, quando si confrontano post_id come post_id<>"", sarà non restituire nulla come risultato predefinito contiene post_ids vuoti. E sembra quando si esegue sotto interrogazione:

SELECT user_id, object_id, post_id 
FROM like 
WHERE user_id=me() 

Esso restituisce le pagine voluto dall'utente e alcune altre cose, ma non i messaggi di avanzamento.

Come già si desidera ottenere i mi piace dalla tabella di flusso, si desidera solo ottenere post_id dalla tabella di flusso. Per ottenere post_id di NewsFeed per un determinato giorno, potresti provare a eseguire una query di seguito.

SELECT post_id 
FROM stream 
WHERE filter_key IN (
    SELECT filter_key 
    FROM stream_filter 
    WHERE uid=me() 
    AND type='newsfeed' 
) 
AND is_hidden = 0 
AND description<>'' 

Si potrebbe desiderare di utilizzare Limit e Created_time campi per ottenere più senza. di post. E una volta utilizzata la query sopra in Multi-query per ottenere i Mi piace per l'utente, otterrai sicuramente i Mi piace per un determinato giorno.

+0

Si prega di leggere le mie modifiche sulla tabella simile non è più la mia domanda in quanto è molto evidente che Facebook ha rimosso la possibilità di ottenere tali informazioni. Per favore, leggi i miei esempi di lavoro su ciò che posso ottenere. In effetti, ho intenzione di modificare la mia domanda in modo che sia più chiaro di ciò di cui ho bisogno in quanto non ho ancora ottenuto la formulazione corretta poiché la risposta e le risposte delle altre persone mi dicono che ho una parola errata. – DMCS

-1
SELECT post_id, actor_id, message, type, permalink, attachment, likes, 
    comments, description, updated_time, created_time 
FROM stream 
WHERE filter_key in (
     SELECT filter_key 
     FROM stream_filter 
     WHERE uid=me() AND type='newsfeed' 
) 

basta cambiare tipo sul vostro requisito

+1

Puoi dirmi, Ajit, quale gradita risposta verrà restituita? – DMCS

2

Ecco cosa mi è venuta in mente, a partire dal momento del distacco (2012/10/22):

per gli amici/subscribedto/pagine articoli:

SELECT likes, post_id, actor_id, target_id, message 
FROM stream 
WHERE source_id IN (SELECT target_id FROM connection WHERE source_id=me()) 
AND likes.user_likes=1 

O

F rom 'come' tabella:

SELECT user_id, object_id, post_id 
FROM like 
WHERE user_id=me() 

Ma post_id è sempre nullo e object_id non esiste volte quando interrogato tramite l'API grafico (cioègraph.facebook.com/OBJECT_ID)

Per collegamenti/oggetti esterni - Non esiste un modo diretto per ottenere i dettagli del post di Facebook da questo, ma restituisce molti risultati. Forse con un'altra query/multiquery alla ricerca di questi URL nello stream o nelle tabelle.

SELECT url 
FROM url_like 
WHERE user_id=me() 
1

Ho trovato una soluzione utilizzando l'API Open Graph. Spero che questo ti aiuterà anche?

Per eseguire questa azione è necessario l'autorizzazione read_stream degli utenti.

Per favore fatemi sapere se la mia soluzione funziona per le vostre esigenze.

Poiché FQL non sarà più supportato rispetto a V2.0, preferirei utilizzare Open Graph API su FQL.

/* 
* 
* Count my_user_id likes in wall of user "123" 
* 
* ex: url = /123/posts 
* 
* setTimeout to avoid exceed api level rate limit, code 613 
*/ 

function findMyLikes(url,my_user_id,count,callback) { 
    console.log(url); 
    FB.api(url, function (response) { 
     if (response.data) { 
      response.data.forEach(function (post) { 
       //console.log(post); 
       if (post.likes) { 
        post.likes.data.forEach(function (like) { 
         if (like.id == my_user_id) { 
          count++; 
         } 
        }); 
       } 
      }); 
     } 

     if (response.paging && response.paging.next) { 
      setTimeout(function() {findMyLikes(response.paging.next,my_user_id,count,callback)},1000); 
     } else { 
      callback(count); 
     } 
    }); 

}; 

Ho notato che questa soluzione potrebbe richiedere del tempo, se si stanno analizzando feed molto lunghi. Per questo problema che ho ancora una questione in sospeso aperta: Ottenere tutte le simpatie da un utente specifico su una parete notizia con meno API grafico chiamate https://codereview.stackexchange.com/q/58270/50013?sem=2

Problemi correlati