読者です 読者をやめる 読者になる 読者になる

感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

PHP SDKを使って、ウォールに写真を投稿して、タイムラインにメッセージ付きで表示させるサンプル。

Facebookアプリ
<スポンサーリンク>

前回の記事ではアルバムに写真をアップロードするところまでやった。
次は、ウォールに写真をアップロードして、その人のタイムラインに写真を表示させてみよう。

これができると、写真をPHPから投稿できるようになるため、胡散臭い診断アプリもどきや占いアプリもどきが作れるようになる。
だって、あんなん適当な画像貼っつけてメッセージをPOSTしてるだけだからね。

実際に投稿されたイメージはこんな感じになる。
f:id:sho322:20131107021256p:plain

用意したtest.jpgをウォールに投稿するサンプルはこちら。

<?php

require_once '../src/facebook.php';

$canvaspage='apps.facebook.com/test-fuga-demo-hoge/';

$protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'
		? 'https://'
		: 'http://';

$canvasUrl = $protocol.$canvaspage;

$facebook =
	new Facebook(
		array('appId' => 'XXXXXXX',
			  'secret'=> 'YYYYYY'));
$user = $facebook->getUser();
$access_token = $facebook->getAccessToken();

if ($user) {
	try {
		$me = $facebook->api('/me');
		$albums = $facebook->api('/me/albums', 'GET');
		foreach ($albums['data'] as $data) {
			if ($data['type'] == 'wall') {
				$wallAlbumId = $data['id'];
				break;
			}
		}
		$message = "性トーク解禁で生徒多く皆勤";
		$attachment = array(
				'access_token' => $access_token,
				'message' => $message,
				'src' => '@../img/test.jpg',
				);
		$facebook->setFileUploadSupport(true);
		$post_result = $facebook->api('/' . $album_id . '/photos', 'POST', $attachment);

		echo $post_result;
	} catch (FacebookApiException $e) {
		echo '<pre>' .htmlspecialchars(print_r($e, true)) .'</pre>';
		$user = null;
	}
} else {
	$url = $facebook->getLoginUrl(
			array('redirect_uri'=>$canvasUrl,
				  'scope' => 'publish_stream'));

	echo "<script>top.location.href = '$url';</script>";
}

?>

サンプルだけ見るとけっこう長いけれど、実際にウォールに投稿する処理はここのところ。

$me = $facebook->api('/me');
$albums = $facebook->api('/me/albums', 'GET');
foreach ($albums['data'] as $data) {
	if ($data['type'] == 'wall') {
		$wallAlbumId = $data['id'];
		break;
	}
}
$message = "性トーク解禁で生徒多く皆勤";
$attachment = array(
		'access_token' => $access_token,
		'message' => $message,
		'src' => '@../img/test.jpg',
		);
$facebook->setFileUploadSupport(true);
$post_result = $facebook->api('/' . $album_id . '/photos', 'POST', $attachment);

echo $post_result;

実際、ウォールに写真を貼っつけているように見えるけれど、中では「wall」というアルバムがあって、そこに写真をアップロードしている。
サンプルは開発者のページに載っている。
https://www.facebook.com/note.php?note_id=238838499461758

あと、すごく役に立ったページがあったので、こちらはブックマークしておいた方がいいかもしれない。
本当に役に立った。
http://www.crystal-creation.com/web-appli/technical-information/web-api/facebook/graph-api/photo.htm#contents-2

このサンプルを作るのに参考にした本

基礎から学ぶ facebookアプリ開発

基礎から学ぶ facebookアプリ開発

サンプルがすごくたくさん載っているから、真似していくうちに他で応用がきくようになってきた。