I\'ve got the Facebook user ID of the user who created a given page. Now I need to get the page ID to display like box in my website.
Different users have their own Face
These answers don't seem to work anymore since the graph now requires an access token for most if not all requests.
Here's a working solution that only requires as input the facebook page URL.
What this does is receives the facebook page as HTML and looks through(via regex) for a JSON entity_id
that has a numeric value. This value is the page's ID. This solution is surely not guaranteed to work forever since page content may change
/**
* @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;
}
this works using the new 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);
}
please note that i'm upset that this works, because what i'm actually looking for is the user id of the page creator since I need to display content created by that user on the tab. this used to be possible, but i don't think it is anymore. kasun, how are you getting the id of the page creator?
goto http://www.facebook.com/insights/ after you logged in to your facebook
press the green button on top right ( "insight for your domain") select the drop down value for your page voila, you see the page_id
(I saw this on facebook forum)
$pages = $facebook->api(array(
'method' => 'fql.query',
'query' => 'SELECT page_id FROM page_admin WHERE uid = '.$uid.''
));
$uid being the profile id# of the FB user! Fql query using PHP SDK
The page id is included in the signed request. Here an updated version of byron's post for facebook's page update.
$facebook = new Facebook();
$signed_request = $facebook->getSignedRequest();
$page_id = $signed_request['page']['id'];
echo 'page id is ' . $page_id . ' AAAAAAAAAAWWWWWWW YYYYYYEEEEEEEEAAAAAAAAAAAA!';
Here are list of functions which you can add in facebook sdk. Works for both graph api and 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;
}