*

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

Message

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

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

関連記事

no image

Pear::pager と TwitterBootstrap をマッシュアップしてみた

前回に引き続き、WEBアプリをカスタマイズしてみました。 DB使って商品登録をしてると

記事を読む

xamppでSSLの設定をする

以前、xamppでvirtual host の設定をしましたが、xamppを使ってて「あれ、SS

記事を読む

no image

ec-cubeで欲しい機能

仕事で、ec-cubeを触っている。どこの企業でも同じだと思うが、ec-cubeを使っているとカスタ

記事を読む

no image

WordPress plugin cooperate to EC-CUBE

downloadhttp://code.google.com/p/now-on-sell/it co

記事を読む

postgresqlデータベースにインデックスを作成する方法

ビットコインが取引停止になったり、LINEがスタンプを自由に作れるようにしたり、何かとにぎや

記事を読む

PVが3000を超えたので3か月やったこととを公表します

ウクライナ情勢が緊迫している昨今、皆様お元気でしょうか? 自分のブログには大きな変化がありました。

記事を読む

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

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

記事を読む

no image

Blogger Syntax Highlighter

今さらですが、Blogger移転を機にSyntax Highlighterを入れてみました。こちらの

記事を読む

no image

podcastのテスト

podcast配信です! mp3ダウンロード mp4ダウンロード

記事を読む

no image

AmazonEC2にcakephp2入れたときにエラーが出た件

  たぶんEC2にはcakephpをこれからも入れるだろうから自分用にエントリー。 Amazon

記事を読む

Google AD

Google AD

PAGE TOP ↑