获取Facebook粉丝页面ID

时间:2010-06-28 06:21:29

标签: php facebook facebook-graph-api

我已经获得了创建给定页面的用户的Facebook用户ID。现在,我需要在我的网站中显示页面ID以显示框。

不同的用户拥有自己的Facebook页面;但是,我知道如何获得他们的Facebook用户ID

8 个答案:

答案 0 :(得分:13)

您可以在页面网址中将www替换为图表。例如可口可乐页面的标识http://graph.facebook.com/cocacola(第一个值)。

答案 1 :(得分:4)

粉丝页面的URL将包含ID。例如,Stack Overflow粉丝页面

http://www.facebook.com/pages/Stack-Overflow/105665906133609

ID 105665906133609

某些页面有别名,也可用作ID。例如,海军陆战队的粉丝页面是

http://www.facebook.com/marinecorps

因此ID为 marinecorps

或者,您也可以在documentation page上使用生成器。

答案 2 :(得分:2)

页面ID包含在已签名的请求中。这里是byron的帖子的更新版本,用于facebook的页面更新。

$facebook = new Facebook();

$signed_request = $facebook->getSignedRequest();
$page_id = $signed_request['page']['id'];

echo 'page id is ' . $page_id . ' AAAAAAAAAAWWWWWWW YYYYYYEEEEEEEEAAAAAAAAAAAA!';

答案 3 :(得分:1)

这可以使用新的php sdk

$page_id = null;
$facebook = new Facebook();
try {
    $signed_request = $facebook->getSignedRequest();
    $page_id = $signed_request['profile_id'];
} catch (FacebookApiException $e) {
    error_log($e);
}

请注意,我很难过这是有效的,因为我实际上正在寻找的是页面创建者的用户ID,因为我需要在选项卡上显示该用户创建的内容。这曾经是可能的,但我不认为它已经存在了。 kasun,你是如何获得页面创建者的身份的?

答案 4 :(得分:0)

$pages = $facebook->api(array(
'method' => 'fql.query',
'query' => 'SELECT page_id FROM page_admin WHERE uid = '.$uid.''
));

$ uid是FB用户的个人资料ID#!使用PHP SDK进行Fql查询

答案 5 :(得分:0)

登录Facebook后

转到http://www.facebook.com/insights/

按右上角的绿色按钮(“您所在域的洞察力”) 选择页面的下拉值 瞧,你看到page_id

(我在facebook论坛上看到了这个)

答案 6 :(得分:0)

以下是您可以在facebook sdk中添加的功能列表。 适用于图形api和rest api。

/*
    Custom functions to get fan page related information
*/
function getSignedData()
{
    if(isset($this->signedData) && !empty($this->signedData))
        return $this->signedData;

    if(!isset($_REQUEST["signed_request"]))
        return false;

    $signed_request = $_REQUEST["signed_request"];

    if(empty($signed_request))
        return false;

    list($encoded_sig, $payload) = explode('.', $signed_request, 2);
    $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);

    if(empty($data))
        return false;

    $this->signedData = $data;



    return $data;
}

/*
    Return fan page id, Only return fanpage id for 1st (landing) page of application.
*/
function getFanPageId()
{
    if(!$data = $this->getSignedData())
    {
        return false;
    }
    if(isset($data["page"]["id"]))
        return $data["page"]["id"];

    return false;
}

/*
    Only returns userid, if user has authenticated application
*/
function getFanPageUserId()
{
    if(!$data = $this->getSignedData())
    {
        return false;
    }

    if(isset($data["user_id"]))
    {
        return $data["user_id"];
    }

    return false;
}

/*
Check if visiting user is fan page admin
*/
function checkFanPageAdmin()
{
    if(!$data = $this->getSignedData())
        return false;

    if(isset($data["page"]["admin"]) && $data["page"]["admin"] == 1)
        return true;

    return false;
}

答案 7 :(得分:0)

这些答案似乎不再起作用,因为图表现在需要大多数(如果不是全部)请求的访问令牌。

这是一个有效的解决方案,只需输入facebook页面网址。

这样做是以HTML格式接收Facebook页面,并通过(通过正则表达式)查找具有数值的JSON entity_id。该值是页面的ID。由于页面内容可能会发生变化,因此无法保证此解决方案永远无法正常工作

/**
 * @param string $facebookUrl
 * @return null|string
 */
function get_facebook_id($facebookUrl)
{
    $facebookId = null;
    $fbResponse = @file_get_contents($facebookUrl);
    if($fbResponse)
    {
        $matches = array();
        if (preg_match('/"entity_id":"([0-9])+"/', $fbResponse, $matches))
        {
            $jsonObj = json_decode("{" . $matches[0] . "}");
            if($jsonObj)
            {
                $facebookId = $jsonObj['entity_id'];
            }
        }
    }
    return $facebookId;
}
相关问题