SQLer 生島勘富 のブログ

RDB・SQLの話題を中心に情報発信をしています。

シェルが使えないレンタルサーバで Facebook API を使う

 PHP 5.2 なら JSON は標準で入っていますからこんな苦労はないですが、レンタルサーバPHP 5.1.6、シェルは使えない。という環境で Facebook API を使うのに嵌まった。シェルが使えないサーバで開発ってこんなに大変なのね(苦笑)

 もう二度とやりたくないけど、せっかくだから備忘録です。

手順

 Facebook SDK for PHP をダウンロードしてクライアントで解凍。
    facebook.php
    base_facebook.php
 をパスが通るところに置く。

 class-json.php をダウンロードしてパスが通るところに置く。
    class-json.php

 base_facebook.php の以下のところを

if (!function_exists('json_decode')) {
  throw new Exception('Facebook needs the JSON PHP extension.');
}

 こんな風に書き換える。

if ( !function_exists('json_decode') ) {
	function json_decode( $string, $assoc_array = false ) {
		global $wp_json;

		if ( !is_a($wp_json, 'Services_JSON') ) {
			require_once( 'class-json.php' ); //パス通は適当に指定する
			$wp_json = new Services_JSON();
		}

		$res = $wp_json->decode( $string );
		if ( $assoc_array )
			$res = _json_decode_object_helper( $res );
		return $res;
	}
	function _json_decode_object_helper($data) {
		if ( is_object($data) )
			$data = get_object_vars($data);
		return is_array($data) ? array_map(__FUNCTION__, $data) : $data;
	}
}

 あとは、ソーシャルメディアAPI リファレンス この辺の通りにすれば多分できると思います。

 WordPressJSON を使って動いているはずなので、その辺を参考にしました(笑)
 SDKを書き換えているので自己責任でお願いします。

 こんなことに嵌まるとは、もう歳やね……。