*

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

ハバネロ へ返信する コメントをキャンセル

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

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

関連記事

【体験談】6年間禁煙を続けられた自分の、禁煙の始め方

4月1日から消費税が8%になり、日用品への影響が少しずつ出てきているころです。 自分はお酒

記事を読む

no image

WEBは入り口

スクール革命っていう、日曜の昼に放送してる番組見てたら、「近いうちに夢を録画できるようになる

記事を読む

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

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

記事を読む

no image

zenphotoを考え始める

googleのwebアルバムを使っていて、こりゃ便利じゃわい、と思ってたけど、結局完全に無料じゃない

記事を読む

no image

wordpressのiphone用プラグイン

Wptouchていうプラグインがあったのでいれてみた。感想は、「ん~、まあこんなものか」です。フリー

記事を読む

アマゾンのクラウド(AWS)を使ってみる その2

前回、アマゾンのクラウド(AWS)を使ってみる で何も無い所からEC2を立ち上げましたが、そのあ

記事を読む

no image

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

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

記事を読む

no image

wordpressからbloggerに引越し

lolipopで使っているロリポプランは、DBが一つしか使用できない。もうちょっと有効に使えないかと

記事を読む

no image

ワードプレスのプラグイン初作成

タイトルのとおり。ワードプレスのプラグインを作ってみました。仕事でEC-CUBE使って販売をしている

記事を読む

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

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

記事を読む

Google AD

Google AD

PAGE TOP ↑