2012-01-12 12 views
7

Che cos'è un modo affidabile per verificare se una pagina Facebook è pubblicata o non pubblicata utilizzando l'API grafico? Io attualmente faccio:Facebook API: Determina se la pagina Facebook è pubblicata/non pubblicata

http://graph.facebook.com/ {} page_id

e verificare se il valore di ritorno è "false". Se è falso, concludo che non è pubblicato e se restituisce un oggetto grafico, quindi concludo che è pubblicato. Ma sto notando ora che molte pagine pubblicate restituiscono "false" dalla richiesta di cui sopra.

Ecco un esempio:

questa pagina è pubblicata: http://www.facebook.com/AjiRestaurant

ma queste richieste return false: http://graph.facebook.com/104433516257517 (utilizzando la pagina Id) http://graph.facebook.com/AjiRestaurant (utilizzando la pagina nome utente)

Qual è la migliore modo di verificare se una pagina è stata pubblicata?

+0

Sto osservando le impostazioni per le mie pagine e non riesco a capire come è possibile impostare pubblico/privato diverso dalla casella di controllo in alto nella pagina che legge: "Visibilità della pagina [] Annulla la pubblicazione della pagina (solo gli amministratori possono vedere questo pagina)". E 'questo quello che vuoi interrogare? – DMCS

+0

Sì, è quello. Mi piacerebbe rilevare quando una pagina è "non pubblicata". Probabilmente ho usato le parole sbagliate "privato/pubblico" e avrei dovuto usare "pubblicato/non pubblicato". Aggiornerò la mia domanda ora –

+0

http://www.facebook.com/AjiRestaurant non si presenta per me. –

risposta

3

Punch questo in meno di interrogazione FQL su http://developers.facebook.com/tools/explorer

SELECT page_id, name, username, is_published 
    FROM page 
    WHERE page_id IN 
     (SELECT page_id FROM page_admin WHERE uid = me()) 
    AND is_published="" 
    ORDER BY fan_count DESC 

che selezionerà tutte le pagine nel tuo account e verificare se sono pubblicati, di ritorno tutte le pagine inedite in un elenco.

+0

Bello! Hai risolto questo. Sembra che "is_published" sia ora disponibile tramite l'API grafico: http://developers.facebook.com/docs/reference/api/page/ –

+0

A partire dall'8 agosto 2016, FQL non sarà più disponibile e non può essere interrogato. –

0

È possibile utilizzare seguente ma funziona quando si hanno manage_pages autorizzazione sulla pagina http://graph.facebook.com/{page_id}/settings

provare questo codice con il manage_pages autorizzazione

FB.api('/me/accounts', function (resp) { 
         //var txtpageid = 
         if (txtpageid != '') { 
          FBactualID = ''; 
          for (var i = 0, l = resp.data.length; i < l; i++) { 
           var page = resp.data[i]; 
           if (page.id == txtpageid) { 
            FBactualID = txtpageid; 
            varFBResponseFlag = true; 
            //alert('inside the page id validation'); 
           } 
          } 
         } 
         getCheckedValue(FBactualID); 

        }); 
+0

Non seguo esattamente quello che stai facendo. Stai iterando attraverso tutte le pagine dell'utente e verificando se l'ID pagina corrisponde all'ID pagina che sto cercando di verificare e quindi archiviarlo in FBactualID. Perché dovresti farlo? E quindi stai chiamando getCheckedValue(). Che cosa fa questo metodo? –

0

Fetch la pagina utilizzando l'API grafico (usando cURL come una chiamata di sistema, HTTPClient con Rails, o $.getJSON() con jQuery, ad esempio) con http://graph.facebook.com/PAGE_ID. Le pagine non pubblicate restituiranno false e quelle pubblicate restituiranno una serie di informazioni JSON.

Questo non richiede alcun token di accesso o permessi.

Utilizzando Curl (riga di comando)

$ curl http://graph.facebook.com/UNPUBLISHED_PAGE_ID 
false 
$ curl http://graph.facebook.com/PAGE_ID 
{"id":"1234","name":"Test Page","picture":.... 

Utilizzando HTTPClient (con Rails)

HTTPClient.get("http://graph.facebook.com/UNPUBLISHED_PAGE_ID").body 
# false 
HTTPClient.get("http://graph.facebook.com/PAGE_ID").body 
# "{\"id\":\"1234\",\"name\":\"Test Page\",\"picture\".... 

Utilizzando $ GetJSON() (jQuery)

$.getJSON("http://graph.facebook.com/UNPUBLISHED_PAGE_ID", function (data) { 
    console.log(data); // false 
} 
$.getJSON("http://graph.facebook.com/PAGE_ID", function (data) { 
    console.log(data); // JSON Object with page info 
} 
+1

Questo non è corretto. Anche le pagine con restrizioni restituiranno false, come nel caso delle pagine che promuovono l'alcol. Prova http://graph.facebook.com/KeystoneLight e vedrai che restituisce false, anche se la pagina è pubblicata. –

+0

Jeff ha ragione. Sono arrivato alla stessa conclusione e ho aggiornato la mia domanda originale con queste informazioni. –

+0

Grazie Julio per la tua risposta. Non è corretto al 100%, ma è comunque una risposta molto informativa, quindi ottieni la taglia. –

0

È possibile visualizzare la pagina solo se si utilizza uno access_token che può visualizzare la pagina nella richiesta.

Vedrai sempre solo le pagine che vedresti con l'utente access_token su Facebook.

L'utilizzo del mio access_token negli esempi precedenti, ad esempio, produce ancora false per AjiRestaurant ma otterrò informazioni per KeystoneLight bene, poiché il mio account corrisponde alle restrizioni.

2

Si scopre che non esiste un modo noto per verificare in modo specifico se una pagina è pubblicata/non pubblicata.L'API grafico http://graph.facebook.com/ {page_id} restituirà FALSE se una delle seguenti condizioni:

  • pagina è inedita
  • pagina ha limitazioni del paese
  • pagina ha limiti di età

se e solo se nessuna delle precedenti impostazioni si applica, allora http://graph.facebook.com/ {page_id} restituirà un grafico dell'oggetto.

Nota: presumo che un token di accesso con autorizzazione manage_pages non venga utilizzato per le chiamate API di cui sopra. Con un token di accesso appropriato, https://graph.facebook.com/ {page_id} restituirà il grafico dell'oggetto, indipendentemente dal fatto che la Pagina abbia o meno restrizioni.

Problemi correlati