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
関連記事
-
-
lolipop(ロリポップ)でTinyTinyRSSを導入
Google reader終了のお知らせは、以前ほど使わなくなったサービスとは言え、かなり自
-
-
podcastのテスト
podcast配信です! mp3ダウンロード mp4ダウンロード
-
-
facebookのビジョンはセマンティックか – ライフログとopen graph
facebookが開発者カンファレンス(f8)でアップデートを発表した。 「また何か機能付
-
-
postgresqlのvacuumでビビった件
ある日突然、サービスが落ちていると連絡を受けました。 URLにアクセスしてみると、確かにサ
-
-
WEBディレクター、WEBエンジニア募集してます。
いっしょにWEB制作やりましょう! クライアント駐在(派遣) 場所:都営大江戸線
-
-
【アフィリエイト】WordPressプラグイン「AmazonJS」をインストールしてみました
ずん飯尾という芸人さんがいます。 中でも「現実逃避シリーズ」がプチブレイクしていて、現実離
-
-
CakePHPでFacebook-PHP-SDKを使ってFacebookログインするアプリの作り方
こんにちは! 昨日は東京では45年ぶりに大雪が降りましたね! 自分の家の方でも雪が2
-
-
PVが3000を超えたので3か月やったこととを公表します
ウクライナ情勢が緊迫している昨今、皆様お元気でしょうか? 自分のブログには大きな変化がありました。
-
-
PHP:GDでテキストの画像合成アプリ作った
前回のNO MUSIC, NO LIFE.メーカーに続き、テキストを入力して画像化するアプリ
-
-
ブログ更新情報をTwitterに流す、FeedBurnerの「Socialize機能」
タイトルの通り、ブログの更新情報をTwitterに流す方法。 結論から言うとFeedBurnaer
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の記述方法でログアウトできると思います。