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
関連記事
-
-
moodleをインストールしてみた
Eラーニングの話題が上がったので、調査のためMoodleをインストールしてみました。 1.
-
-
zenphotoを入れてみる
これまでの写真データ管理にはGoogleのWEBアルバムを使ってきたが、無料で使えるのは1GBまでだ
-
-
Google Analyticsで毎日チェックするべき4つの項目
こんにちは! まだまだ寒い日が続きますねー。皆様ご自愛ください。 さて、通常なにかし
-
-
さくらインターネットでPEARを使ってみる
以前、自分が持っている書籍を管理するアプリ「ブックマネージャー」を作ってアップしてたのですが
-
-
ロリポップ+お名前.comで独自ドメイン取得
onamae.com で独自ドメイン取得しました。 そのときのメモ。 1.lollipo
-
-
cakephpでPHPのタイムゾーン設定してないとエラーが出る件
ロリポップからさくらにサーバを変えたのは先日のエントリーの通りですが、サーバ環境が違うことでca
-
-
wordpressのiphone用プラグイン
Wptouchていうプラグインがあったのでいれてみた。感想は、「ん~、まあこんなものか」です。フリー
-
-
【なぜ?!】ブログの直帰率が激減しました【GoogleAnalytics】
少し前から気づいていましたが、このブログの直帰率が激減しました。 まずはこちらの図表からどうぞ。
-
-
さくらでcakephpを使って500internal server errorが出る場合の対応
こんにちは! 今日は節分ですね。自分の子供のころ、節分と言えば豆まきだったわけですが、近ご



RSS
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の記述方法でログアウトできると思います。