スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

facebookページのfeedで取れない情報がある

Graph APIを使ってfacebookページのfeedを取得した時に、apiで取得出来ないfeedがあった。
取得の仕方は下記で。
$GET_ACCESS_TOKEN_URL  = 'https://graph.facebook.com/v2.2/oauth/access_token?client_id=%s&client_secret=%s&grant_type=client_credentials&scope=public_profile,read_stream,publish_actions,user_likes,user_activities,user_photos,user_about_me,user_status,manage_pages&locale=ja_JP';
$GET_FEED_URL = 'https://graph.facebook.com/v2.2/%s/feed?access_token=%s&limit=200&locale=ja_JP';

$app_id = 'facebookアプリのapp_id';
$app_secret = 'facebookアプリのseacret key';

// アクセストークンを取得
$access_tokens = file_get_contents(sprintf($GET_ACCESS_TOKEN_URL, $app_id, $app_secret));

// トークンを分割
$access_token = explode('=', $access_tokens);
$access_token = $access_token[1];

$facebook_page = '取得したいfacebookページ'
// feed取得
$res = file_get_contents(sprintf($GET_FEED_URL, $facebook_page, $access_token));
$data_array = json_decode($res, TRUE);

print_r($data_array);

これで、ページへの投稿とかも取れていたが、取れないユーザーが数人いた。

結論を言うと、投稿している人の設定で取得が出来ていなかった。

設定->アプリ->他のユーザーが使用しているアプリ の項目に「私の写真」という項目があって、
このチェックをオフにすると、公開投稿であっても、API経由ではデータを取れなくらしい。

201502161.png

スポンサーサイト

人が作ったfacebookページのfeedを取得する方法

自分のfacebookアカウントで作ったfacebookページなら、
めんどうな事をせずに、都度アクセストークンを取れば良いっぽいけど
今回ハマったのは、人が作ったfacebookページのfeedとかを取得したい時のメモ
facebookへの接続とかは
$access_token = '........'; // access_token
$page_id = 'facebookページのID';
$GET_FEED_URL = 'https://graph.facebook.com/v2.0/%s/feed?access_token=%s&limit=200&locale=ja_JP';
$res = file_get_contents(sprintf($GET_FEED_URL, $page_id, $access_token));
$data_array = json_decode($res, TRUE);


アクセストークンは、
http://kimoto.hatenablog.com/entry/2013/12/04/201343
を参考に作成をしたもの。
今回は60日の有効期限のものを使用。

$page_id は、対象のfacebookページの
https://www.facebook.com/○○○
の○○○の部分。
コカコーラだと
https://www.facebook.com/cocacola

cocacola
が、$page_id になる。

limit=200
は、取得する件数なので必要に応じて変更する。
※ 2014/07に250件がmaxになったみたい。


アクセストークンは期限が過ぎるとエラーになるので
デバッグツールで、期限を確認しておいた方が良い。

参考サイト
有効期限無限なFacebook PageのAccess Tokenの作り方
Facebookアクセストークンを取得してそれを60日間使えるようにする

「いいね」を押した後に、何か処理を行う

「いいね」を押した後に、何か処理を行う必要があったので対応した時のメモ。
これをするには、XFBML形式で「いいね」ボタンを設置する必要がある。
XFBML形式での設置方法は、こちらを参考に。

ただ、上記サイトそのままだと

FB is not defined

みたいなエラーが出てしまって、うまく動かなかった(Firefoxのエラーコンソールで確認)

下記のようにしたらうまく動いた。
※開発中のテストとかで「いいね」とかを押しまくるとスパム扱いされてしまうらしいのでテストはほどほどに。。

「いいね」を押すと「承認」と言うリンクが出てくる

html

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://ogp.me/ns/fb#">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script src="http://connect.facebook.net/ja_JP/all.js#xfbml=1&appId=xxxxxxxxx"></script>
<script>
$(function() {
FB.Event.subscribe('edge.create',
function(response) {
alert('You liked the URL: ' + response);
}
);
});
</script>
</head>

<body>

<div id="fb-root"></div>

<fb:like href="http://google.com/" send="false" layout="button_count" width="450" show_faces="false"></fb:like>

</body>
</html>


参考サイト
FB.Event.subscribe
ProWorks Facebook Test Pages
FB.Event.subscribe.edge.create

「いいね」を押すと「承認」と言うリンクが出てくる

「いいね」を押すと「承認」と言うリンクが出てくるようになってしまった・・・。
テスト中に「いいね」して、それを削除したりを繰り返してたら急に出るようになりました。
解決策は、今のところ無いみたい。
困ったな~。

時間が経てばもとに戻ると言うらしいが・・・
本番運用中に出なくて良かった。。

参考サイト

facebookの「いいね」ボタンに「承認」が必要となるケースについて

DBなどに保存した情報からfacebook apiを叩く方法

通常、自分の情報にアクセスする時は下記のような形で行う。

require '../src/facebook.php';
$facebook = new Facebook(array(
'appId' => YOUR_APP_ID,
'secret' => YOUR_APP_SECRET,
'cookie' => true,
));
$session = $facebook->getSession();
$me = null;
if ($session) {
try {
$uid = $facebook->getUser();
$me = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
}
}


これで$meの中身を調べれば欲しい情報は入っている。
ただ、$sessionに値が入っていない場合は、この方法だと取得が出来ない。

その場合は、$facebook->getUser();で取得したユーザーIDをDBに保持して以下のように取得する。


$uid = 保存した$facebook->getUser();の値
$access_token = file_get_contents("https://graph.facebook.com/oauth/access_token?client_id=".YOUR_APP_ID."&client_secret=".YOUR_APP_SECRET."&grant_type=client_credentials");
$me = json_decode(file_get_contents(
'https://graph.facebook.com/'.$uid.'?' .$access_token));


取得出来る内容はこことか、ここを読みながらやればなんとかなりそう。

プロフィール

U2K

Author:U2K
いろいろプログラムに関しての覚え書きをちょくちょくと書いていきます。

オススメ










オススメ

忍者AdMax

u2k on Twitter

最近の記事


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。