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

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

FacebookのPHP SDKを使って、写真をアップロードする方法

スポンサーリンク

あらかじめ用意した画像ファイルを、PHPを使って、そのままFacebook上ににアップロードするサンプルを作ってみる。
まだちゃんとわかっていないなりに、PEARのHTTP_Requestを使って、画像をPOSTした。
PEARのHTTP_Requestの解説はこちらのページ。
http://pear.php.net/manual/ja/package.http.http-request.file-upload.php

さて、PHP SDKで写真をアップロードするには、FacebookクラスのgetLoginUrlメソッドのscopeのプロパティに「publish_stream」を設定して、写真をアップロードする許可をもらわなければならない。
以下に全部を載せるが、抜粋すると、この部分である。

$url = $facebook->getLoginUrl(
		array('redirect_uri' =>$canvasUrl,
			   'scope' => 'publish_stream'));
echo "<script type='text/javascript'>
			top.location.href='$url';</script>";

さて、それでは、picture_upload.phpなるファイルを用意したWebサーバ(自分のはロリポップ)にアップロードしよう。

<?php
require_once '../src/facebook.php';
require_once 'HTTP/Request.php';

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

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

$canvasUrl = $protocol.$canvaspage;

$facebook =
	new Facebook(
		array('appId' => '12340101',
			  'secret'=> 'jklfjaodics'));
$user = $facebook->getUser();

if ($user) {
	try {
		$access_token=$facebook->getAccessToken();
		$graph_url = "https://graph.facebook.com/me/photos?"
			. "access_token=" .$access_token;

		$req =& new HTTP_Request($graph_url);
		$req->setMethod(HTTP_REQUEST_METHOD_POST);

		//test.jpgをmy-pic.jpgという名前でアップロードする
		$result = $req->addFile("my-pic.jpg","../img/test.jpg");
		if (PEAR::isError($result)) {
			echo $result->getMessage();
		} else {

			$response = $req->sendRequest();

			if (PEAR::isError($response)) {
				echo "error";
				echo $response->getMessage();
			} else {
				echo "body";
				echo $req->getResponseBody();
			}
		}
	} catch (FacebookApiException $e) {
		echo '<pre>' .htmlspecialchars(print_r($e, true)). '</pre>';
	}
} else {
	$url = $facebook->getLoginUrl(
			array('redirect_uri' =>$canvasUrl,
				   'scope' => 'publish_stream'));
	echo "<script type='text/javascript'>
				top.location.href='$url';</script>";
}

?>

投稿がうまくいくと、こんな感じで、idとpost_idが返ってくる。

{"id":"1428431280705157","post_id":"100006148952723_1428431287371823"}

実際に投稿されるのはこんな感じ。
f:id:sho322:20131107013127p:plain

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

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

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

Facebookアプリの本は数少ないけれど、この本はサンプルがものすごく豊富に載っている。
真似するだけで基本機能を作ることができる。
PHPもにわかじゃなくて、ちゃんと勉強したい。