2012-04-13 16 views
33

Ho visto this question ma quello che voglio è diverso.API grafico di Facebook - Ottieni ID dall'URL della pagina di Facebook

Voglio ottenere l'ID di Facebook non da un URL generale (e quindi condizionale se ha il pulsante Mi piace o no). Voglio ottenere l'ID di Facebook dato una pagina di Facebook utilizzando l'API Graph.

Si noti che le pagine di Facebook possono avere diversi formati, come ad esempio:

http://www.facebook.com/my_page_name 
http://www.facebook.com/pages/my_page_name 
http://www.facebook.com/my_page_ID 

So che potrei fare un po 'regex per ottenere sia il nome my_page o my_page_ID, ma mi chiedo se qualcuno sa se GraphAPI è sostenere ciò che voglio.

+1

Vale la pena notare che sebbene l'API di Facebook specifichi che le pagine sono l richiamato tramite {page-id} e che l'ID è una "stringa numerica", il nome del testo sembra funzionare altrettanto bene. – Kylotan

risposta

26

Mi sembra che la soluzione più semplice per ciò che si descrive è quello di ottenere solo l'id/nome dal URL che hai usando lastIndexOf ("/") (che la maggior parte delle lingue hanno un equivalente per) e quindi ottenere "https://graph.facebook.com/" + id.

I dati restituiti da questo url hanno l'id (es: 6708787004) e il nome utente (es .: southpark), quindi indipendentemente dall'identificatore che si utilizza (ciò che si estrae dall'url utilizzando lastIndexOf), si dovrebbe ottenere lo stesso risultato.


Modifica

Questo codice:

identifier = url.substring(url.lastIndexOf("/")) 
graphUrl = "https://graph.facebook.com/" + identifier 
urlJsonData = getGraphData(graphUrl) 

dovrebbe funzionare lo stesso (che è il risultato con gli stessi dati) per entrambi:

url = http://www.facebook.com/southpark 

E

url = http://www.facebook.com/6708787004 

(sarà ovviamente necessario implementare il metodo getGraphData).

Inoltre, il 2 ° modulo url nella questione non è un URL valido per le pagine, almeno non dal mio test, ottengo:

You may have clicked an expired link or mistyped the address. Some web addresses are case sensitive.

+0

puoi spiegarlo meglio questo è anche utile per me capisco cosa intendi ma non ho ottenuto l'id o il nome usando lastindexof() puoi per favore fornire il codice completo –

+1

Sicuro, modificato la mia risposta –

+0

Grazie così caro caro –

5
<?php 

function getFacebookId($url) { 

    $id = substr(strrchr($url,'/'),1); 

    $json = file_get_contents('http://graph.facebook.com/'.$id); 

    $json = json_decode($json); 

    return $json->id; 

} 


echo getFacebookId($_GET['url']); 


?> 

Questo è un esempio PHP di come ottenere l'ID.

+0

Come fai a sapere che riceverai sempre URL con ID pagina facebook. Potrebbe esserci il nome della pagina anziché l'id della pagina. Cosa farai in quel caso? –

0

Questa risposta tiene conto che un URL può terminare con una barra finale, qualcosa che le pagine di eventi di Facebook sembrano avere nei loro URL ora.

function getId(url) { 
    var path = new URL(url).pathname; 
    var parts = path.split('/'); 

    parts = parts.filter(function(part) { 
    return part.length !== 0; 
    }); 

    return parts[parts.length - 1]; 
} 
7

La risposta alla domanda è pubblicato sopra, ma il metodo illustrato di seguito funziona bene non abbiamo per eseguire la regex sulle URL della pagina facebook

ho avuto la risposta da questo metodo

FB.api('/any_fb_page_url', function(response){ 
    console.log(response); 
}); 

any_fb_page_url può essere uno dei seguenti tipi

https://www.facebook.com/my_page_name 
https://www.facebook.com/pages/my_page_name 
https://www.facebook.com/my_page_ID 

Questo sono elencati anche nella domanda di cui sopra

Questo codice è testato su console JS accessibile Facebook Developers site tools

Problemi correlati