TwitterからFacebookグループへの投稿スクリプトを書いてみた
最近になってFacebookグループを使う機会が増えたのでネタの一つとして。
自分自身、情報発信の基本はツイッター。
ここでいう情報発信というのは気になる記事や開発中のフィードバックなど。
プライベートな発言などはFacebookのタイムラインでつぶやいてる。
なぜツイッターかと言えば、数あるSNSサービスの中で最も手軽だと思ったから。
と言っても世の中のすべてのSNSを網羅してるわけじゃないし、
愛用してるChromeの拡張機能でもツイッターが一番使いやすい。
Facebookでもいいけど、つながりが深い人達に対していちいち送るような内容でもないし、送信頻度が高いからあんまりタイムラインをカオスにしたくないのもある。
というわけで、なんだかんだツイッターが一番情報発信に使いやすい。
ただ、最近はFacebookグループでも情報を共有するようになり
ツイッターと同期させたくなった。
ツイッターとFacebookタイムラインの連携サービスは存在するが
特定のFacebookグループのフィードへ投稿するサービスが見つからなかったので
PHPで自作することにした。
同期までの流れ
おおまかには以下のような流れとなる。
ツイッターアカウントOauth認証&ツイッターアカウントのタイムラインを取得
こちらを参考に。
OAuth認証させれば、Botも簡単に作ることができる。
注意が必要なのはアクセストークンおよびシークレットキーの取り扱い。
これが第三者に漏洩すると、自分のアカウントによって他人をスパム攻撃させてしまう。
FacebookアカウントOauth認証
facebook OAuth + PHP でログイン処理の実装
こちらを参考にしてアクセストークンなどを取得。
ただし、厄介なのがアクセストークンの有効期限である。
普通に取得しても2時間でそのアクセストークンは使い物にならなくなってしまう。
2時間って…ほぼなんもできない。
そこで、取得したアクセストークンの有効期限を延長させる必要がある。
Facebookアクセストークンを取得してそれを60日間使えるようにする
このサイトの通りにすればアクセストークンの有効期限を延長できる。
Facebookグループフィードへ投稿
アクセストークンなどが取得できたら、認証して特定のグループフィードへ投稿する。
$result = $fb->api("(はてなグループID)/feed", "post",$param);//ウォールへポスト
を渡すことで、フィードへ投稿できる。
FacebookグループのIDとは、グループのページのURLを見た時に
https://www.facebook.com/groups/(はてなグループID)/
から取ってくれば良い。
参照するapiフィールドは上記にあるようにpostである。
他にもあるようだが詳しくは https://developers.facebook.com/docs/reference/api/ を参照。
投稿する本文には
ツイッターのタイムラインから取得した本文を入れればよい。
最後に
もっと工夫すれば、画像などの投稿もできるがここでは割愛。
というのも自分は撮影画像などは張らないからである。
既にweb上にある画像はURLを貼ればよいだけなので、特に支障はない。