39

我见过这个问题,但我想要的是不同的。

我想不是从一般 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 是否支持我想要的。

4

9 回答 9

30

在我看来,您所描述的最简单的解决方案是从您使用lastIndexOf("/")(大多数语言都有对应的)的 url 中获取 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方法)。

此外,问题中的第二个 url 形式不是页面的有效 url,至少不是来自我的测试,我得到:

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

于 2012-04-13T23:02:19.580 回答
10

问题的答案已在上面发布,但下面显示的方法可以正常工作,我们不必regex在 facebook 页面 url 上执行

我通过这种方法得到了答案

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 开发人员站点工具上可用的 JS 控制台上进行了测试

于 2015-07-14T09:08:51.073 回答
6

您可以使用以下 api 获取页面 id

https://graph.facebook.com/v2.7/smhackapp?fields=id,name,fan_count,picture,is_verified&access_token=access_token &format= json

参考图像

于 2016-08-19T08:50:55.060 回答
5

这个答案在 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 商店”,“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);
于 2019-05-08T06:36:39.753 回答
4
<?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 示例。

于 2012-06-25T16:04:51.783 回答
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];
}
于 2015-03-24T23:23:48.383 回答
0

您可以在python中使用请求重新模块

代码:

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

输出:

[*] 编号:100001013078780

于 2018-11-20T10:14:35.990 回答
0

截至 2021 年 11 月 26 日,这些解决方案都不起作用。Facebook 已锁定 API,因此您需要 App Review。

https://developers.facebook.com/docs/pages/overview/permissions-features#features

于 2021-11-26T18:50:15.930 回答
-1

也许您可以查看https://developers.facebook.com/docs/reference/api/#searching文档:针对几种类型进行搜索,如果您找到所需的内容,请从那里开始。

于 2012-04-13T23:02:22.313 回答