2013年03月10日のツイート

TwitterからFacebookグループへの投稿スクリプトを書いてみた

最近になってFacebookグループを使う機会が増えたのでネタの一つとして。

自分自身、情報発信の基本はツイッター
ここでいう情報発信というのは気になる記事や開発中のフィードバックなど。
プライベートな発言などはFacebookのタイムラインでつぶやいてる。

なぜツイッターかと言えば、数あるSNSサービスの中で最も手軽だと思ったから。
と言っても世の中のすべてのSNSを網羅してるわけじゃないし、
愛用してるChrome拡張機能でもツイッターが一番使いやすい。
Facebookでもいいけど、つながりが深い人達に対していちいち送るような内容でもないし、送信頻度が高いからあんまりタイムラインをカオスにしたくないのもある。

というわけで、なんだかんだツイッターが一番情報発信に使いやすい。
ただ、最近はFacebookグループでも情報を共有するようになり
ツイッターと同期させたくなった。

ツイッターFacebookタイムラインの連携サービスは存在するが
特定のFacebookグループのフィードへ投稿するサービスが見つからなかったので
PHPで自作することにした。

同期までの流れ

おおまかには以下のような流れとなる。

  1. ツイッターアカウントOAuth認証
  2. ツイッターアカウントのタイムラインを取得
  3. FacebookアカウントOauth認証
  4. Facebookグループフィードへ投稿

ツイッターアカウントOauth認証ツイッターアカウントのタイムラインを取得

PHP+OAuthでTwitter

こちらを参考に。
OAuth認証させれば、Botも簡単に作ることができる。
注意が必要なのはアクセストークンおよびシークレットキーの取り扱い。
これが第三者に漏洩すると、自分のアカウントによって他人をスパム攻撃させてしまう。

FacebookアカウントOauth認証

facebook OAuth + PHP でログイン処理の実装

こちらを参考にしてアクセストークンなどを取得。
ただし、厄介なのがアクセストークンの有効期限である。
普通に取得しても2時間でそのアクセストークンは使い物にならなくなってしまう。
2時間って…ほぼなんもできない。

そこで、取得したアクセストークンの有効期限を延長させる必要がある。

Facebookアクセストークンを取得してそれを60日間使えるようにする

このサイトの通りにすればアクセストークンの有効期限を延長できる。

Facebookグループフィードへ投稿

アクセストークンなどが取得できたら、認証して特定のグループフィードへ投稿する。

$result = $fb->api("(はてなグループID)/feed", "post",$param);//ウォールへポスト

生成したFacebookオブジェクトの中にあるapi要素に

  • 投稿先のFacebookグループのID
  • 参照するapiフィールド
  • 投稿する本文

を渡すことで、フィードへ投稿できる。

FacebookグループのIDとは、グループのページのURLを見た時に
https://www.facebook.com/groups/(はてなグループID)/
から取ってくれば良い。

参照するapiフィールドは上記にあるようにpostである。
他にもあるようだが詳しくは https://developers.facebook.com/docs/reference/api/ を参照。

投稿する本文には
ツイッターのタイムラインから取得した本文を入れればよい。

最後に

もっと工夫すれば、画像などの投稿もできるがここでは割愛。
というのも自分は撮影画像などは張らないからである。
既にweb上にある画像はURLを貼ればよいだけなので、特に支障はない。