Reputation: 131
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 Facebook pages; however, I know how to get their Facebook user IDs
Upvotes: 13
Views: 30492
Reputation: 26271
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;
}
Upvotes: 0
Reputation: 2006
I am presuming that you are the user and you want the page id of a page that you are the admin of.
To get the id is fairly straightforward.
First, you need to get a list of all pages associated with the user id:
$fanpages = $facebook->api('me/accounts?access_token='.$accessToken);
You would then do a loop like:
foreach ($fanpages['data'] as $fanpage)
{
echo "<br />Fan Page Name: ".$fanpage['name'] . " ID: ".$fanpage['id'];
}
That would list all the pages associated with the id.
For a full list of the elements of the $fanpage array, take a look here:
https://developers.facebook.com/docs/reference/api/page/
Upvotes: 0
Reputation: 650
You can replace www to graph in the page URL. For example id of the Coca-Cola page http://graph.facebook.com/cocacola (first value).
Upvotes: 13
Reputation: 561
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;
}
Upvotes: 0
Reputation: 22000
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!';
Upvotes: 2
Reputation: 994
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?
Upvotes: 1
Reputation: 1548
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)
Upvotes: 0
Reputation: 86
$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
Upvotes: 0
Reputation: 105868
The URL to the fan page will have the ID in it. For example, the Stack Overflow fan page
http://www.facebook.com/pages/Stack-Overflow/105665906133609
The ID is 105665906133609
Some pages have aliases, which are also usable as the ID. For example, the Marine Corps' fan page is
http://www.facebook.com/marinecorps
So the ID is marinecorps
Alternatively, you can use the generator on the documentation page as well.
Upvotes: 5