*

facebook for PHP SDKを使ってCakePHPでログアウトとポストする方法

公開日: : 最終更新日:2014/05/26 WEBサービス, テクニック , , , , ,

logout-fb

ソチオリンピックではスノーボード・ハーフパイプで平野さん・平岡さんが初のメダル獲得をしましたね!おめでとうございます!
やっぱりメダルを獲得するとオリンピックが盛り上がります。

平野さんはなんと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」は、下記の画像のように表示されます。
必要に応じて設定しましょう。

cakephp-facebook-post

 

ビューを作る

ここもログアウト同様、ポスト自体はSDKがやってくれますので、シンプルに表示します。
適時かっこよくカスタマイズしてくださいね。
app/View/Fbconnect/fbpost.php

Facebookに投稿しました。
<br />
<a href="showdata">戻る</a>

これで画面を見てみましょう。
うまくポスト&ログアウトできてれば成功です。
結構簡単にできましたね!

まとめ

今回、かなり無駄なところは省いて伝えましたので、アプリとして作っていくにはもっと改善が必要になると思います。
DBをほとんど使ってませんので、ユーザの情報をDBで取得して他のユーザとマッチングさせたり、facebookへのポストとは別に、アプリの方で掲示板のようなものを作ってユーザ同志の交流をするのも楽しいと思います。

もし記事を見てアプリを作ったら連絡ご連絡ください。この場で紹介させてもらいますね!
あと、もし記事中で間違ったことやご意見がありましたら下のコメント欄でご連絡ください。
この情報が何かの役にたちますように。

Google AD


Comment

  1. ハバネロ より:

    ここに書いてあるログアウト方法を試した後、「前回作成したfacebookでログインするアプリ」のリンク先の方法で別ユーザーでログインを試してみたんですがうまく行きません。最初にログインしたユーザーの情報がずっと表示され続けてしまいます。ある程度時間が経ってから(おそらくセッションがexpireしてから)別ユーザーでログインするとちゃんとログインできます。

  2. ハバネロ より:

    自己解決しました。
    $this->facebook->destroySession();
    の他に、CakePHPじゃない普通のPHPのセッションを消すコード、具体的には

    $_SESSION[“fb_<アプリID>_code”]=null;
    $_SESSION[“fb_<アプリID>_access_token”]=null;
    $_SESSION[“fb_<アプリじd>_user_id”]=null;

    も書けばちゃんと新しいユーザーでログインできました。

  3. rainy4649 より:

    >ハバネロさん
    コメントありがとうございます!
    見返してみたところ、コードに不具合がありました。
    (記事は修正しました。)
    PHPのセッション削除のコードでもいけると思いますが、修正したコードでCakePHPの記述方法でログアウトできると思います。

rainy4649 へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

佐々木俊尚さんの講演:ソーシャルとクラウドとグローバル

11月17日、Hitachi Open Middleware World Cloud Day に参

記事を読む

ファビコン(.ico)の作成方法

テーマを変更したついでと言ってはなんだけど、ファビコンの作成方法をメモしておきます。

記事を読む

no image

facebookのビジョンはセマンティックか – ライフログとopen graph

facebookが開発者カンファレンス(f8)でアップデートを発表した。 「また何か機能付

記事を読む

facebook logo

facebookでログイン機能を作成してみた

最近の会員サイトには、facebookでログインする、という機能がよくついてます。 この機能が

記事を読む

cakephp2にACLプラグインを入れてみた

cakephpで、ユーザーによって権限やアクセスを変えたりする方法を調べてたら、それ用のプラ

記事を読む

SVNリポジトリのリプレース(とeclipseの設定)

  SVNリポジトリのリプレースを行ったのでエントリー。 1.リポジトリをdump svn

記事を読む

CakePHP1.3でブラウザを閉じてもセッションが切れないようにする方法

ちょっと体調を崩してしまってましたが、なんとか回復してきました。(辛かった・・・) 本当に

記事を読む

no image

タグクラウド機能を付加。

右側のナビにタグクラウドを付けた。どうでしょうか。それにしてもワードプレスってタグが簡単だよね。wp

記事を読む

no image

ホームページ(笑)を作ればモノが売れるという幻想(笑)

まだこんな考えもってる人がいたのかwww もう「ほーむぺーじ」って言うのもやめて欲

記事を読む

嫌われている人から好かれようと思わなくていいんだという件

自分用にちょっとしたライフハックに気づいたので、リマインダーとしてエントリー。 それは「嫌

記事を読む

Google AD

Google AD

PAGE TOP ↑