【问题标题】:Facebook Graph API - Get ID from Facebook Page URLFacebook Graph API - 从 Facebook 页面 URL 获取 ID
【发布时间】:2012-04-26 07:29:34
【问题描述】:

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

【问题讨论】:

  • 值得注意的是,虽然 Facebook API 指定通过 {page-id} 查找页面并且 ID 是“数字字符串”,但文本名称似乎同样适用。跨度>

标签: facebook facebook-graph-api


【解决方案1】:

在我看来,您所描述的最简单的解决方案是从您使用 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,至少不是来自我的测试,我得到:

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

【讨论】:

  • 你能解释一下吗这对我也很有用我明白你的意思但是我没有使用 lastindexof() 得到 id 或 name 你能给出完整的代码吗
  • 这并不总是有效。我正在查看一个 URL 格式为 facebook.com/pages/<Name>/<Number> 的页面。我尝试询问 graph.facebook.com/,但我收到一个错误:{“错误”:{“消息”:“不支持的获取请求。”,“类型”:“GraphMethodException”,“代码”:100 } }。使用整个路径也不起作用。这是一个由测试用户创建的未发布页面(我正在尝试测试一个需要以编程方式获取页面 ID 的应用)。
  • @NitzanTomer 这行得通:graph.facebook.com/
  • @NitzanTomer 如果 URL 以斜杠结尾,此代码将不起作用。现在 Facebook 中的事件 URL 似乎都有。
  • 这行不通了?如果你去graph.facebook.com/my_name,它说它需要一个访问令牌。
【解决方案2】:

问题的答案已在上面发布,但下面显示的方法可以正常工作,我们不必在 facebook 页面 url 上执行 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 控制台上测试

【讨论】:

    【解决方案3】:

    【讨论】:

    • 工作得很好。不要忘记将access_token 替换为有效的令牌。
    【解决方案4】:

    此答案于 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 商店", “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);
    

    【讨论】:

    • 是否可以将任何 Facebook URL 直接传递到 API 并返回个人资料对象?
    【解决方案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 示例。

    【讨论】:

    • 你怎么知道你总是会得到有 facebook page id 的 url。可能有页面名称而不是页面 ID。在这种情况下你会怎么做?
    【解决方案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];
    }
    

    【讨论】:

      【解决方案7】:

      您可以在 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

      【讨论】:

        【解决方案8】:

        截至 2021 年 11 月 26 日,这些解决方案均无效。 Facebook 已锁定 API,因此您需要 App Review。

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

        【讨论】:

          【解决方案9】:

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

          【讨论】:

            猜你喜欢
            • 2022-09-26
            • 2011-04-04
            • 1970-01-01
            • 2013-06-23
            • 2016-03-22
            • 2013-05-28
            • 2012-11-15
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多