Facebook Graph API - 从Facebook获取ID页面URL

问题描述:

我看过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

在我看来,你所描述的最简单的解决方案就是从你使用的网址获得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

也许你可以去翻https://developers.facebook.com/docs/reference/api/#searching文档:搜索针对几种类型,如果你找到你想要的东西从那里去。

<?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

这个答案考虑到一个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]; 
} 

的问题的答案张贴,但低于所示的方法工作得很好,我们没有对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

您可以通过使用下面的API获取页面ID

https://graph.facebook.com/v2.7/smhackapp?fields=id,name,fan_count,picture,is_verified&access_token=的access_token &格式= JSON

Reference image

+0

不工作了。 – Hideya 2016-11-30 22:31:43

+0

工作得很好。不要忘记用有效的标记替换'access_token'。 – ACIDSTEALTH 2017-01-31 20:42:09