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
関連記事
-
-
eclipseのリソース名を変更する
ちょっとキョドったのでエントリー。 1. eclipse > エクスプローラー から名前を変更
-
-
wordpress plugin change the taxonomy when you suggest the time
1. at first, download Post Expirator.2.change code
-
-
WordPressのテーマを「stinger」に変えたよ
しばらくぶりにブログ(Wordpress)のテーマを変更しました。 以前はオールホワイトで
-
-
あらら?Googleのストレージサービスで、無料なのに有料プランが使えてる?!
「ストレージサービス」をご存知でしょうか。「サーバーのディスクスペースを
-
-
PVが3000を超えたので3か月やったこととを公表します
ウクライナ情勢が緊迫している昨今、皆様お元気でしょうか? 自分のブログには大きな変化がありました。
-
-
JQueryのsliderでpagination機能を作ってみた
複数ページが存在するWEBサイトによく使われている機能として「ページネーション」があります。
-
-
【なぜ?!】ブログの直帰率が激減しました【GoogleAnalytics】
少し前から気づいていましたが、このブログの直帰率が激減しました。 まずはこちらの図表からどうぞ。
-
-
【wordpress:プラグイン】会員制サイトを作るのでBuddyPressをインストールしてみた
今ちょっと温めてるアイデアがあって、それを実現させるために会員制サイトを作ろうと思います。
-
-
アマゾンのクラウド(AWS)を使ってみる
前々からやろうやろうと思っていて手を着けられていなかったサービス、アマゾンウェブサービス(AWS
-
-
【今さら】ブラインドタッチができるようになるまでにやった3つの事【もういいでしょ】
過去、仕事で一緒になった人がブラインドタッチが苦手だということがありました。 両手の人差し
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の記述方法でログアウトできると思います。