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

时间:2012-04-13 22:41:32

标签: facebook facebook-graph-api

我见过this question,但我想要的是不同的。

我想从一般网址获取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是否支持我想要的内容。

8 个答案:

答案 0 :(得分:30)

在我看来,你所描述的最简单的解决方案就是从你使用 lastIndexOf(“/”)的网址中获取id / name(大多数语言都有等效的)然后获取“https://graph.facebook.com/”+ id

此url返回的数据具有id(即:6708787004)和用户名(即:southpark),因此无论您使用哪个标识符(使用lastIndexOf从url中提取的内容),都应该得到相同的结果


修改

此代码:

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 方法)。

此外,问题中的第二个网址表格不是网页的有效网址,至少不是我的测试,我得到:

  

您可能点击了过期的链接或输入了错误的地址。一些网站   地址区分大小写。

答案 1 :(得分:10)

问题的答案在上面发布,但下面显示的方法工作正常我们没有必要在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

这也列在上面的问题

此代码在Facebook Developers site tools

上的JS控制台上进行测试

答案 2 :(得分:6)

您可以使用以下api

获取页面ID

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

Reference image

答案 3 :(得分: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示例。

答案 4 :(得分: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];
}

答案 5 :(得分:0)

您可以在 python

中使用请求 re 模块

代码:

import requests,re

profile_url = "https://www.facebook.com/alanwalker97"

idre = re.complie('"entity_id":"([0-9]+)"')

con = requests.get(profile_url).content

id = idre.findall(con)

print("\n[*] ID: "+id[0])

输出:

  

[*] ID:100001013078780

答案 6 :(得分:0)

此答案已在2019年更新和检查: 这非常简单,因为您无需从链接中提取任何内容。例如:

  1. https://www.facebook.com/pg/Vaireo-Shop-2138395226250622/about/
  2. https://www.facebook.com/withminta
  3. https://www.facebook.com/2138395226250622

https://graph.facebook.com/?id=link&access_token=xxxxxxxx

响应: {     “名称”:“ Vaireo Shop”,     “ id”:“ 2138395226250622” }

完整的nodeJS答案:

async function getBusinessFromFBByPageURL(pageURL: string) {
    const accessToken = process.env.fb_app_access_token;
    const graphUrl = `https://graph.facebook.com/?id=${pageURL}? access_token=${accessToken}`;
    const fbGraphResponse = await Axios.get(graphUrl);

答案 7 :(得分:-1)

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