facebook for PHP SDKを使ってCakePHPでログアウトとポストする方法
ソチオリンピックではスノーボード・ハーフパイプで平野さん・平岡さんが初のメダル獲得をしましたね!おめでとうございます!
やっぱりメダルを獲得するとオリンピックが盛り上がります。
平野さんはなんと15歳だとのこと。
これからも期待ができます。
ちなみに自分が15歳の時まだスノーボードは日本に本格的に上陸してませんでしたね。
ここ6年くらいスノーボードに行ってません。。久しぶりに行きたい・・・
さて今回は、前回作成したfacebookでログインするアプリに、ログアウト機能と、facebookのタイムラインにポスト(投稿)する機能を付加する方法をお伝えします。
さっそくやってきましょう。
1.ログアウトする
コントローラーに、以下の記述を追加します。
app/Controller/FbconnectController.php
public function logout(){ $facebook = new Facebook(array( 'appId' => Configure::read("facebook.APP_ID"), 'secret' => Configure::read("facebook.APP_SECRET"), )); $params = array( 'next' => 'http://cake.hakomori.net/'); $logoutUrl = $facebook->getLogoutUrl($params); $facebook->destroySession(); }
ここで大切なのは、destroySession() の部分です。
セッションをdestroyするんですね。
こうすることでセッションに保存されたfacebookのログイン情報が削除されます。
次に、コントローラーに合わせてビューも作ってみます。
app/View/Fbconnect/logout.ctp
ログアウトしました。<br> <a href="./">ログインする</a>
ログアウトのビューはシンプルにしてますが、適時カスタマイズしてみてください。
2.タイムラインにポストする
いよいよタイムラインにポスト(投稿)してみます。
これができるようになると、ようやく「アプリ」っぽくなりますよね。
占い系のfacebookアプリや、他サービスとのマッシュアップアプリでも、facebookのタイムラインにポストするアプリはたくさんあります。この機能はfacebookアプリで必須になると思いますので、ぜひ試してみてください。
コントローラーに、以下の記述を追加します。
app/Controller/FbconnectController.php
//facebookのwallにpostする処理 public function fbpost() { $message = $this->request->data['message']; $facebook = $this->createFacebook(); $attachment = array( 'access_token' => $facebook->getAccessToken(), //access_token入手 'message' => $message, // 'name' => "テスト", // 'link' => "http://twitter.com/rainy4649/", // 'description' => "アプリのテストしてます!", ); $facebook->api('/me/feed', 'POST', $attachment); }
ここでは、ポストするメッセージをformで受け取る形にしています。
$this->request->data[‘message’] の部分がそれにあたります。
上記でコメントアウトしている「name」「link」「description」は、下記の画像のように表示されます。
必要に応じて設定しましょう。
ビューを作る
ここもログアウト同様、ポスト自体はSDKがやってくれますので、シンプルに表示します。
適時かっこよくカスタマイズしてくださいね。
app/View/Fbconnect/fbpost.php
Facebookに投稿しました。 <br /> <a href="showdata">戻る</a>
これで画面を見てみましょう。
うまくポスト&ログアウトできてれば成功です。
結構簡単にできましたね!
まとめ
今回、かなり無駄なところは省いて伝えましたので、アプリとして作っていくにはもっと改善が必要になると思います。
DBをほとんど使ってませんので、ユーザの情報をDBで取得して他のユーザとマッチングさせたり、facebookへのポストとは別に、アプリの方で掲示板のようなものを作ってユーザ同志の交流をするのも楽しいと思います。
もし記事を見てアプリを作ったら連絡ご連絡ください。この場で紹介させてもらいますね!
あと、もし記事中で間違ったことやご意見がありましたら下のコメント欄でご連絡ください。
この情報が何かの役にたちますように。
Google AD
関連記事
-
-
podcastのテスト
podcast配信です! mp3ダウンロード mp4ダウンロード
-
-
嫌われている人から好かれようと思わなくていいんだという件
自分用にちょっとしたライフハックに気づいたので、リマインダーとしてエントリー。 それは「嫌
-
-
NO MUSIC,NO LIFE.メーカー作ってみた
以前から、画像を使ったアプリを作ってみたいと思い、GDを使ったアプリを作ってみました。 N
-
-
wordpress plugin change the taxonomy when you suggest the time
1. at first, download Post Expirator.2.change code
-
-
オブジェクトとクラスについて
基本的なところをちょっと復習。 下記あたりが参考になったのでメモ。 http://www.k
-
-
【wordpress:プラグイン】会員制サイトを作るのでBuddyPressをインストールしてみた
今ちょっと温めてるアイデアがあって、それを実現させるために会員制サイトを作ろうと思います。
-
-
【解説】Googleウェブマスターツールの使い方
サイトの分析やアクセス解析のツールと言えばGoogleAnalyticsですよね。 このブ
-
-
「おっ」思ったWEBデザイン
ちょっと調べることがあったのでメモ。■株式会社テトラシーンhttp://www.tetratone.
-
-
WEBディレクター、WEBエンジニア募集してます。
いっしょにWEB制作やりましょう! クライアント駐在(派遣) 場所:都営大江戸線
-
-
さくらでcakephpを使って500internal server errorが出る場合の対応
こんにちは! 今日は節分ですね。自分の子供のころ、節分と言えば豆まきだったわけですが、近ご
Comment
ここに書いてあるログアウト方法を試した後、「前回作成したfacebookでログインするアプリ」のリンク先の方法で別ユーザーでログインを試してみたんですがうまく行きません。最初にログインしたユーザーの情報がずっと表示され続けてしまいます。ある程度時間が経ってから(おそらくセッションがexpireしてから)別ユーザーでログインするとちゃんとログインできます。
自己解決しました。
$this->facebook->destroySession();
の他に、CakePHPじゃない普通のPHPのセッションを消すコード、具体的には
$_SESSION[“fb_<アプリID>_code”]=null;
$_SESSION[“fb_<アプリID>_access_token”]=null;
$_SESSION[“fb_<アプリじd>_user_id”]=null;
も書けばちゃんと新しいユーザーでログインできました。
>ハバネロさん
コメントありがとうございます!
見返してみたところ、コードに不具合がありました。
(記事は修正しました。)
PHPのセッション削除のコードでもいけると思いますが、修正したコードでCakePHPの記述方法でログアウトできると思います。