首页 文章

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

提问于
浏览
36

我见过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是否支持我想要的 .

7 回答

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

    在我看来,你所描述的最简单的解决方案是从你使用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地址区分大小写 .

  • 0

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

  • 5
  • 6

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

    您可以在 python 中使用 Requestsre 模块

    码:

    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

  • 29

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

相关问题