ブログを更新したのをTwitterやFacebookで宣伝するには、dlvr.itなど、RSSやATOMフィードをTwitterやFacebookに反映させるサービスが便利です。
Google+の投稿もTwitterで宣伝できたらいいなあと思ったのですが、feedの取得にはひと工夫必要でしたのでそれをメモ。
feed取得時にいちいちAPIたたくのも時間がかかるので、APIから取得した情報を一旦自分のサーバーに保存する方法をとります。
とりあえず、Google+の投稿をJSON形式で取得→PHPを使って自分のサーバーに保存、というとこまで。
※用意するもの:PHP5が使えるサーバー
Google+ API keyの取得
Googleの各種サービスは、APIが整備されているので、簡単に取得できます。
たとえばGoogle+の、あるユーザーの投稿を取得したいときは、下記のようなURLにアクセスするとJSON形式で取得できます。
https://www.googleapis.com/plus/v1/people/107280905455242158652/activities/public
取得できましたでしょうか?
‥できませんね。
APIのリクエストを行うには、OAuth認証を通すか、APIキーを取得する必要があります。
今回はサーバーから自動でリクエストさせるので、APIキーを取得します。
API Accessで、使いたいサービス(今回はGoogle+ API)を選択して取得してください。
API Accessのメニューを開くと、API keyという項目がありますので、これをメモっておきます。
Google+の投稿をJSON形式で取得
先ほどのリンクに?key=[API key]
を追加して再度アクセスしてみてください。
例:
https://www.googleapis.com/plus/v1/people/107280905455242158652/activities/public?key=abcdefghijklmnopqrstuvwxyz0123456789
※API keyが適当なので上のURLをそのままたどるとエラーになります。ご自分で取得したAPI keyをご利用ください
今度こそ、表示されたかと思います。
パラメータを足すことで、表示する投稿件数(デフォルトは20件)の変更などもできます。
APIの詳細はActivities: list – Google+ Platform — Google Developersをご覧ください。
https://www.googleapis.com/plus/v1/people/107280905455242158652/activities/public?key=abcdefghijklmnopqrstuvwxyz0123456789&maxResults=10
JSON形式で取得したデータを、PHPで自分のサーバーに保存
APIをたたくのはfile_get_contents()
関数で行います。
サーバーへの保存は簡単にやりたいので、データベースでなくテキストファイルとして更新します。
APIから出力された情報を変数に格納
<?php
// 投稿を取得したいユーザーの、ユーザーID
$user_id = "123456789123456789123456789";
// API key
$api_key = "abcdefghijklmnopqrstuvwxyz0123456789";
// APIから出力された情報を変数 $gplus_data に格納
$gplus_data = file_get_contents(
"https://www.googleapis.com/plus/v1/people/".
$user_id.
"/activities/public?key=".
$api_key");
?>
テキストファイルに書き込み
<?php
// ファイル名。あらかじめ空のファイルを作ってパーミッションを変更しておきます
$file_name = "myactivity.txt";
// ファイルを上書きモードで開く
$file = fopen($file_path, "w");
// 他の処理が同時に動いてたときにバグらないよう、結界を張ります
flock($file, LOCK_EX);
// データをファイルに書き込みます
fwrite($file, $gplus_data);
// 結界を解きます
flock($file, LOCK_UN);
// ファイルを閉じます
fclose($file);
?>
まとめるとこう
<?php
// 初期設定
$user_id = "123456789123456789123456789";
$api_key = "abcdefghijklmnopqrstuvwxyz0123456789";
$file_name = "myactivity.txt";
// 書き込むファイルの階層がばらけないよう、ルートパスでファイルの場所を指定しておきます
$directory_path = dirname(__FILE__). "/";
$file_path = $directory_path. $file_name;
// APIをたたく
$gplus_data = file_get_contents(
"https://www.googleapis.com/plus/v1/people/".
$user_id.
"/activities/public?key=".
$api_key.
"&maxResults=10"); // 10件までを表示する指定
// テキストファイルに書き込み
if(!$gplus_data) {
exit("loading error"); // APIの指定が間違ってるか、API自体が止まってるときのエラー
} else {
$file = fopen($file_path, "w");
if(!$file) {
exit("open file error"); // 書き込みのパーミッションがないときのエラー
} else {
flock($file, LOCK_EX);
fwrite($file, $gplus_data);
flock($file, LOCK_UN);
fclose($file);
}
}
// 結果をモニタリング(ファイル書き込みの機能自体には、下記の行は不要です)
print_r( file_get_contents($file_path) );
?>
上記コードのPHPをたたいて、$file_nameで指定されたファイルにgoogle+の情報が書き込まれていれば成功です。