投稿

GianismにFacebookページとして投稿させる

Gianism を 3.0.6 にアップデートしました。これはバグフィックスと機能追加の中間のようなバージョンです。

Gianism では、Facebookに投稿するための機能を実装していました。このためには次のような作業が必要になります。

次のようにしてページ設定が可能です。

  1. Gianism 設定画面で「Facebook APIを利用する」をオンにする。
  2. 新しく「Facebook API」というタブが現れるので、そこで「トークンを取得する」というリンクをクリックする(読み取り専用または書き込み可能が選べます)
  3. トークンの取得に成功すると、アカウント一覧が表示されるので、ページを設定する。
  4. これで、ページとしてのトークンが設定されますので、APIを利用して色々な操作ができます。
<?php
// 設定が終わっていたらトークン設定済みのAPIが手に入ります。
$api = gianism_fb_page_api();
if ( is_wp_error( $fb ) ) {
  // 失敗しました。
  return false;
}
// Graph APIが設定できたら取得したら操作ができます。
// Try-Catchでくくるといいでしょう。
try {
  $feeds = $fb->get( "me/feed" );
  // GraphEdgeメソッドで取得できます。
  $status = '';
  foreach ( $feeds->getGraphEdge() as $fb_post ) {
    $status = $fb_post->getField( 'message' );
    break;
  }
  return $status;
} catch ( Exception $e ) {
  return false;
}

$api オブジェクトは Facebook\Facebook オブジェクトです。Facebook PHP SDKのリファレンスをお読みいただくと詳しい使い方がわかります。

アップデートの経緯

さて、これまではGianismに「ページとして投稿ができる」機能は実装済みと思っていたのですが、これまで実装されていた機能は「連携したアカウントでページに投稿ができる」機能でした。

たとえば、私のFacebookアカウントはTakahashi Fumiki なのですが、このアカウントを利用して Gianism.info のFacebookページに投稿した場合、権限がなく、エラーとなります。また、仮にできたとしても、「Takahashi FumikiがGianism.infoにメッセージを書き込んだ」ということでしかないので、これは意図した結果と異なります。

通常、WordPressサイトとFacebookページを連携させる場合、目的はサイトアイデンティティの一致だと思われます。したがって、なにかをFacebookに投稿する場合、ページとして投稿した方が、ユーザーの混乱も少ないでしょう。

もちろん、単に「投稿を公開しました!」というポストをFacebookページにするだけなら、Jetpackでも十分できることではありますので、なにか工夫をしてみてください。

実装例

私は自分のサイトを利用して、試しにこんな機能を実装してみました。

  • 私たちの小説投稿サイト「破滅派」にて、ログインしているユーザーがテキストを撰択して「シェア」をクリックする
  • このテキストから外部サービスを利用して画像が生成される
  • Gianismはその画像のURLを使って、Facebookページtwitterに画像を投稿する

テキストからこうした画像が生成されます。

これはもともとInstagram向けに作られた機能でしたが、現在のInstagram APIは画像の投稿を禁止しているのです :p

どうでしょう? ユーザーは自分のアカウントを使ってシェアするのは躊躇しますが、私たちのアカウントとしてつぶやきつつメンションを送れば、快くいいねやRTをしてくれそうではないですか? いいアイデアがあれば、ぜひ私たちにも教えてください。

それでは、今後ともGianismを宜しくお願いします。