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
関連記事
-
-
JQueryのsliderでpagination機能を作ってみた
複数ページが存在するWEBサイトによく使われている機能として「ページネーション」があります。
-
-
ブログでアクセス増やすためにはやっぱりタイトルと記事が重要らしい件
最近はアクセス数にも気をつけてるので、ブログのアクセスを増やす方法が書かれた記事が気になりま
-
-
cakephpでviewからログイン判定してアカウント表示する機能
cakephpのログイン機能を、viewから判定させたかったので調べてみました。 よく
-
-
zenphotoを考え始める
googleのwebアルバムを使っていて、こりゃ便利じゃわい、と思ってたけど、結局完全に無料じゃない
-
-
【アフィリエイト】WordPressプラグイン「AmazonJS」をインストールしてみました
ずん飯尾という芸人さんがいます。 中でも「現実逃避シリーズ」がプチブレイクしていて、現実離
-
-
cakephp2にACLプラグインを入れてみた
cakephpで、ユーザーによって権限やアクセスを変えたりする方法を調べてたら、それ用のプラ
-
-
【wordpress】buddypressでの子テーマの作リ方
先日BuddyPressのインストール方法をお伝えしましたが、インストールしたままテーマを変
-
-
windows7のxamppでvirtual hostを設定する
忘れないように忘れてもいいようにエントリー。 タイトルの通りです。 c:/xampp/a
-
-
postgresqlのスロークエリ(スローログ)を取得する
45年ぶりの雪が、1週おきに降るってどういうことでしょうか? とは言え、雪が降るといつもと
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の記述方法でログアウトできると思います。