人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

自分が管理しているFacebookページの一覧をPHPで取得する方法を教えてください。Facebook APIやFQLなどを使用して、現在自分(Facebookにログインしている)が管理しているFacebookページの名前とIDの一覧を対で取得したいです。
サンプルなど掲載されているサイト等あれば是非お教えください。


●質問者: kanienoteiou
●カテゴリ:インターネット
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kitiko
●30ポイント

まず前提として、facebookPHP-SDKを取得する必要があります。それは以下を参考にしてください。

facebookのPHP-SDKで、ウォールに書き込んだり、フレンドリストを取得したり。 | motooLogue


そののちに、

友達一覧であれば:
facebook apiを使って友達一覧を取得する - phpnoviceの日記

いいね数であれば:
[PHP]FacebookのAPIを使って、特定のURLのいいね数を取得する « Codaholic

を参考にしてfacebook側から、データを取得してください


kanienoteiouさんのコメント
失礼しました。質問の書き方が誤解を招くような書き方だったかと思います。 自分がadministratorとして管理する"Facebookページ"自体の名称とそのIDを取得したいのです。

2 ● rouge_2008
●300ポイント ベストアンサー

まずはFacebookアプリを登録します。

・Facebookアプリ(ページ)の登録手順(2012年1月20日版・その1)
http://www.h-fj.com/blog/archives/2012/01/20-105000.php
・Facebookアプリ(ページ)の登録手順(2012年1月20日版・その2)
http://www.h-fj.com/blog/archives/2012/01/21-152934.php
※上記で「ウェブサイト」となっている項目は、現在は「Website with Facebook Login」となっています。


Facebook PHP SDKを準備します。
・Facebook PHP SDK (v.3.1.1)
https://github.com/facebook/facebook-php-sdk/downloads


次のコードを記述したPHPファイルと上記Facebook PHP SDKをsrcディレクトリごと、アプリ登録時にFacebook上のアプリのキャンバスURLで設定したURLにアップします。

<?php
require_once('src/facebook.php');
header("Content-type: text/html; charset=utf-8");

$facebook = new Facebook(array(
 'appId' => "あなたのApp ID",
 'secret' => "あなたのApp Secret",
));

$user = $facebook->getUser();

if(!$user) {
$url = $facebook->getLoginUrl(array(
'canvas' => 1,
'fbconnect' => 0,
// status_updateステータス更新
// publish_streamフィードへの書き込み許可
// manage_pages管理しているファンページへのアクセス許可
// offline_accessオフラインでのアクセス許可
'req_perms' => 'status_update,publish_stream,manage_pages,offline_access'
));
echo " <a href='" . $url . "'>Login</a>";
exit();

} else {
try {
$logoutUrl = $facebook->getLogoutUrl();
$me = $facebook->api('/me'); // 自分の情報を取得
$pagesData = $facebook->api('/me/accounts');

echo "<a href='". $logoutUrl ."'>Logout</a>";
echo "<pre>";
print_r($me);
print_r($pagesData);
print_r($_SESSION);
echo "</pre>";
// ページの名前とIDを表示
foreach($pagesData['data'] as $val) {
if($val['category'] != 'Application') {
echo "<br>\n【Page Name】" . $page_name = $val['name'];
echo " 【ID】". $page_id = $val['id'];
}
}
} catch (FacebookApiException $e) {
echo "FacebookApiException: " . $e->getMessage();
$loginUrl = $facebook->getLoginUrl();
echo " <a href='" . $loginUrl . "'>Login</a>";
exit();
}
}

?>

※$pagesData['data']に管理しているページと登録したアプリケーションの情報が入っています。

http://d.hatena.ne.jp/language_and_engineering/20111006/p1
http://blog.hebita164.jp/entry/20101024/1287933193


※ページの名称とIDのみの表示に関してコードに追加しました。


kanienoteiouさんのコメント
完璧です。 完全に希望通りの動きです。 まさにこれを望んでおりました。 素晴らしいです。 前回の質問に引き続き本当にありがとうございます! コードを勉強させていただきます!

kanienoteiouさんのコメント
すみません。いまさらなのですが、$pageData['page']に登録しているアプリケーションの情報しか入ってこないようです。管理しているファンページのデータが取得できない。 なぜでしょうか?

rouge_2008さんのコメント
管理人の権限で追加して管理する権限を取得したページの場合、上記Graph API利用によるコードでもFQLでも、ページのデータを取得できない現象を確認しました。 この事が明記されたページが見つからない為、仕様か不具合かは不明です。 取得したページ一覧の利用目的が分かりませんが、単に管理しているページへのアクセスを簡単に行いたいのでしたら、個人アカウントのホームにアクセスして、サイドバーからアクセスしてはいかがでしょうか? 仕事など自分専用のページを作成している場合、ページ名アカウントで「いいね!」する事もできますので、ページのハイライトに表示されている「いいね!」の一覧からアクセスする事もできます。 自分用アプリで取得したい場合は、「いいね!」したサイトの一覧なら取得できますので、管理するページだけ「いいね!」して、「$facebook->api('/me/likes');」で取得してもいいと思います。 「いいね!」を通常通り利用したい場合はこの方法は使えませんが・・・ 自分で作成したページのデータは取得できるはずですので、こちらのデータが取得できない場合の理由は分かりません。 なお、一部希望の動作に添えなかったようですので、ポイント送信メッセージで一部ですがポイントを返還してありますので、ご確認お願いします。

rouge_2008さんのコメント
パーミッションの付与が正しく行われていなかったのが原因でした。 「req_perm」を「scope」に修正すると取得できます。 大変失礼しました。 >|| $url = $facebook->getLoginUrl(array( (? 略 ?) 'req_perms' => 'status_update,publish_stream,manage_pages,offline_access' )); ||<
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ