我见过this question,但我想要的是不同的。
我想从一般的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是否支持我想要的。
在我看来,你所描述的最简单的解决方案是从你使用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方法)。
此外,问题中的第二个网址表单不是页面的有效网址,至少不是我的测试,我得到:
您可能已点击过期链接或输错了地址。某些Web地址区分大小写。
该问题的答案在上面发布,但下面显示的方法工作正常,我们没有必要在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控制台上进行测试
您可以使用以下api获取页面ID
https://graph.facebook.com/v2.7/smhackapp?fields=id,name,fan_count,picture,is_verified&access_token=access_token&格式= JSON
<?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示例。
这个答案考虑到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];
}
您可以在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])
输出:
[*] ID:100001013078780
这个答案在2019年更新并检查:它非常简单,因为您不需要从链接中提取任何内容。举些例子:
https://graph.facebook.com/?id=link&access_token=xxxxxxxx
回复:{“name”:“Vaireo Shop”,“id”:“2138395226250622”}
完整节点JS答案:
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);
也许你可以浏览https://developers.facebook.com/docs/reference/api/#searching文档:搜索几种类型,如果你找到你想要的东西,那就去那里。