2012-04-13 55 views
33

我看過this question但我想要的是不同的。Facebook Graph API - 從Facebook獲取ID頁面URL

我想從一般的URL中獲取Facebook ID(因此,如果它具有Like按鈕,則有條件)。我想使用Graph API獲得Facebook頁面上的Facebook ID。

注意,Facebook網頁可以有多種格式,如:

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

我知道我可以做一些正則表達式來獲得無論是my_page名稱或my_page_ID,但我想知道如果任何人知道,如果GraphAPI是支持我想要的。

+1

值得注意的是,儘管Facebook API指定頁面爲l通過{page-id}關閉,並且ID是一個「數字字符串」,文本名似乎同樣適用。 – Kylotan 2015-06-23 19:11:38

回答

26

在我看來,你所描述的最簡單的解決方案就是從你使用的網址獲得id/name lastIndexOf(「/」)(大多數語言都有相同的),然後得到「https://graph.facebook.com/」+ id

此網址返回的數據包含id(即:6708787004)和用戶名(即:southpark),因此無論您使用哪個標識符(使用lastIndexOf從網址中提取的內容),您都應該得到相同的結果。


編輯

此代碼:

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

應工作相同(即導致使用相同的數據)兩種:

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

而且

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

(你顯然需要實現getGraphData方法)。

此外,在討論的第二個URL的形式不是頁面有效的URL,至少不是從我的測試中,我得到:

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

+0

可以請你解釋一下這個對我來說也是有用的 我明白你的意思,但我沒有得到使用lastindexof()的id或名字 可以請給出完整的代碼 – 2012-04-14 07:32:11

+1

當然,編輯我的回答 – 2012-04-14 10:00:38

+0

謝謝親愛的 – 2012-04-14 11:37:32

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']); 


?> 

這是一個如何獲得ID的PHP示例。

+0

你怎麼知道你總是會得到具有Facebook頁面ID的網址。可能有頁面名稱而不是頁面ID。在這種情況下你會做什麼? – 2015-12-05 08:13:18

0

這個答案考慮到一個URL可以以斜線結尾,這是Facebook事件頁面現在在他們的URL中似乎有的東西。

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

的問題的答案張貼,但低於所示的方法工作得很好,我們沒有對Facebook的網頁網址進行regex

我用這種方法得到的答案

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

any_fb_page_url可以是以下任一類型的

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

這也列在問題上面

此代碼是JS控制檯上測試可在Facebook Developers site tools

相關問題