Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取Facebook粉丝页面ID_Php_Facebook_Facebook Graph Api - Fatal编程技术网

Php 获取Facebook粉丝页面ID

Php 获取Facebook粉丝页面ID,php,facebook,facebook-graph-api,Php,Facebook,Facebook Graph Api,我已经获得了创建给定页面的用户的Facebook用户ID。现在我需要让页面ID在我的网站中像方框一样显示 不同的用户有自己的Facebook页面;但是,我知道如何获取他们的Facebook用户ID。粉丝页面的URL将包含该ID。例如,堆栈溢出风扇页面 http://www.facebook.com/pages/Stack-Overflow/105665906133609 身份证号码是10566590613609 有些页面有别名,也可用作ID。例如,海军陆战队的风扇页面是 http://www.f

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


不同的用户有自己的Facebook页面;但是,我知道如何获取他们的Facebook用户ID。粉丝页面的URL将包含该ID。例如,堆栈溢出风扇页面

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

身份证号码是10566590613609

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

http://www.facebook.com/marinecorps

所以身份证是海军陆战队

或者,也可以在上使用生成器

$uid是FB用户的配置文件id!登录facebook后使用PHP SDK进行Fql查询

按右上角的绿色按钮查看您的域 选择页面的下拉值 瞧,你看到页面了吗


我在facebook论坛上看到了这个

它使用新的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,你如何获得页面创建者的id?

页面id包含在已签名的请求中。这里是拜伦发布的facebook页面更新的最新版本

$facebook = new Facebook();

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

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

以下是您可以在facebook sdk中添加的函数列表。 适用于graph 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;
}

您可以将www替换为页面URL中的图形。例如,Coca-Cola页面第一个值的id。

我假设您是用户,并且您想要您是其管理员的页面的页面id

获取id相当简单

首先,您需要获得与用户id关联的所有页面的列表:

$fanpages=$facebook->api'me/accounts?访问令牌='。$accessToken

然后执行如下循环:

foreach ($fanpages['data'] as $fanpage)
{
echo "<br />Fan Page Name: ".$fanpage['name'] . " ID: ".$fanpage['id'];
}
这将列出与该id关联的所有页面

有关$fanpage数组元素的完整列表,请查看以下内容:


这些答案似乎不再有效,因为图形现在需要对大多数(如果不是所有)请求使用访问令牌

这里有一个可行的解决方案,只需要输入facebook页面URL

它的作用是以HTML形式接收facebook页面,并通过hvia regex查找具有数值的JSON实体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;
}

有什么方法可以获得fanpage id吗?我只需要获得fanpage id,我知道创建页面的用户id。plz我需要帮助我已经尝试过了,没有办法通过creater id获得fanpage id,最后我从喜欢页面的用户那里获得id,creater也需要喜欢该页面你根本不需要使用创建者的id。我不知道你要去哪里。很高兴知道你可以得到这样的信息,但我没有看到任何地方,它列出了网页信息。这里还有其他需要采取的步骤吗?很好的链接,可以知道页面的任何页面id+1谢谢
/**
 * @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;
}