Facebook Graph APIを使用してFacebookのウォールに書き込みをしてみた。
作成したものはこんな感じ。
ウォールの記事を指定した分表示しておいて
その上にはテキストエリアを用意し
ウォールの書き込みをできるようにしてみた。
で、書き込みしたものは下のウォール記事表示個所で
すぐに確認できるようにしてみた。
これをするにはまず、新規でアプリを作成する必要があるので
facebook developersにログイン後アクセスして
画面の右上にある「新しいアプリケーションを作成」をクリックして作成する。
これを作成すると、AppIDとアプリの秘訣というのがわかる。
もう一つ重要なのが「サイトドメイン」で実際プログラムファイルは
設定したサイトドメイン下でしか使えないと思う。
この取得したAppIDとアプリの秘訣を
facebook-php-sdkをダウンロードして
このオブジェクトを作成する際に入力する。
で、コードはこんな感じ
<?php
// facebook-php-sdkをロード
require_once 'facebook-php-sdk/src/facebook.php';
// アプリの情報
$facebook = new Facebook(array(
'appId' => 'AppID',
'secret' => 'アプリの秘訣',
'cookie' => false
));
// ログイン状態(ログイン状態でなければログイン画面へ)
if(!$facebook->getUser()){
$url = $facebook->getLoginUrl(array('scope' => array('user_checkins')));
echo "<script>top.location.href='{$url}';</script>";
exit;
}
// ウォール情報用配列と投稿取得数
$wallArray = array();
$getCnt = 20;
if($_POST['wall'] || $_POST['wall'] != ""){
if($facebook->api('/me/feed', 'POST', array('message' => $_POST['wall']))){
// ウォール情報の取得
$wallArray = $facebook->api('/me/feed', 'GET', array('limit' => $getCnt));
}
}else{
// ウォール情報の取得
$wallArray = $facebook->api('/me/feed', 'GET', array('limit' => $getCnt));
}
// ウォール情報を投稿取得数だけループして取得
for($i=0;$i<$getCnt;$i++){
if($wallArray['data'][$i]['message'] != ""){
$wallRsult[] = $wallArray['data'][$i]['message'];
}
}
?>
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ウォールの書き込みと取得</title>
<style>
body{
font-size: 12px;
}
textarea{
width: 176px;
margin-bottom: 0px;
}
#wall{
width: 180px;
height: 300px;
overflow: auto;
border: 1px solid #CCC;
}
ul{
list-style: none;
padding: 0px;
margin: 0px;
}
li{
border-bottom: dotted 1px #CCC;
padding: 5px;
}
</style>
<script type="text/javascript">
/**
* 投稿ボタンの表示と非表示
*/
function submitWall(state){
document.getElementById('submit').style.display = state;
}
</script>
</head>
<body>
<form action="このファイルのパス" method="post">
<textarea name="wall" placeholder="今なにしてる?" onfocus="submitWall('block');"></textarea>
<div id="submit" style="display:none;"><input style="width:182px; margin-bottom:10px;" type="submit" value="投稿"></div>
</form>
<div id="wall">
<ul>
<?php
foreach($wallRsult as $value){
echo "<li>".$value."</li>";
}
?>
</ul>
</div>
</body>
</html>
これ実行すると、ログイン状態でない場合
ログイン後には、アプリに移動します。
コードは、コメントの通り至って簡単で、ウォールに書き込みができる。
実際には「$facebook->api('/me/feed', 'POST', array('message' => $_POST['wall'])」でウォールに投稿している。
こんな感じでした。
ちょっとはまった所があったので
これ失敗すると、下みたいなエラーがでる。
これは、アプリからウォールへの書き込みが許可されていないためだと思う。
実際には下記のように
「publish_stream」という所にチェックを入れると
書き込み出来るようになった。
この画面は、facebook developersの画面の左メニュー「Graph APIエクスプローラを使用する」から移動し「アクセストークンを取得する」から移動できる。
色々やってみたけど、まだまだ勉強しないと全然わからんわ…。
最近のコメント