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

Hom*_*ith 39 facebook facebook-graph-api

我看过这个问题,但我想要的是不同的.

我想从一般的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
Run Code Online (Sandbox Code Playgroud)

我知道我可以做一些正则表达式获取my_page名称或my_page_ID,但我想知道是否有人知道GraphAPI是否支持我想要的.

Nit*_*mer 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)
Run Code Online (Sandbox Code Playgroud)

两者应该相同(对于相同数据的结果):

url = http://www.facebook.com/southpark
Run Code Online (Sandbox Code Playgroud)

url = http://www.facebook.com/6708787004
Run Code Online (Sandbox Code Playgroud)

(你显然需要实现getGraphData方法).

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

您可能已点击过期链接或输错了地址.某些Web地址区分大小写.

  • 这不再起作用了?如果你去http://graph.facebook.com/my_name,它说它需要一个访问令牌. (3认同)
  • 这并不总是有效.我正在查看其网址为http://www.facebook.com/pages/ <Name>/<Number>的网页.我试过要求graph.facebook.com/ <Number>,但是我收到一个错误:{"error":{"message":"不支持的获取请求.","type":"GraphMethodException","code":100 }.使用整个路径也不起作用.这是一个由测试用户创建的未发布页面(我正在尝试测试需要以编程方式获取页面ID的应用程序). (2认同)

Sur*_*lwe 10

问题的答案在上面发布,但下面显示的方法工作正常,我们没有必要regex在Facebook页面上执行网址

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

FB.api('/any_fb_page_url', function(response){
  console.log(response);
}); 
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

这也列在上面的问题中

此代码在Facebook开发人员站点工具上的JS控制台上进行测试


dan*_*ang 6

这个答案是在 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

响应: { "name": "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);
Run Code Online (Sandbox Code Playgroud)


Alo*_*mel 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']);


?>
Run Code Online (Sandbox Code Playgroud)

这是一个如何获取ID的PHP示例.