*

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

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

WP-SpamFree by Pole Position Marketing

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

関連記事

WordPressのテーマを「stinger」に変えたよ

しばらくぶりにブログ(Wordpress)のテーマを変更しました。 以前はオールホワイトで

記事を読む

no image

WEBという革命

自分がインターネットと出会ったのは14~15年前だが、海外に行くことがあって本当にネットの便利さ

記事を読む

facebook logo

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

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

記事を読む

no image

Blogger Syntax Highlighter

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

記事を読む

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

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

記事を読む

no image

SVNリポジトリでコミットできなかった件

ベンダーさんに、先日立てたSVNリポジトリにコミットできないと連絡いただき、調べたところ、権限が

記事を読む

no image

WEBディレクター、WEBエンジニア募集してます。

いっしょにWEB制作やりましょう! クライアント駐在(派遣) 場所:都営大江戸線

記事を読む

no image

moodleをインストールしてみた

Eラーニングの話題が上がったので、調査のためMoodleをインストールしてみました。 1.

記事を読む

あらら?Googleのストレージサービスで、無料なのに有料プランが使えてる?!

  「ストレージサービス」をご存知でしょうか。「サーバーのディスクスペースを

記事を読む

no image

ec-cubeで欲しい機能

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

記事を読む

Google AD

Google AD

no image
ビジネスを自動化する!仕組みづくり

収益化のルール https://www.youtube.co

セールススキルの大切さ

今日はセールススキルって大事って話だよ。 ・営業とりあえずやっ

テレワーク・在宅勤務に最適な間取りプランとは?

家の中で集中力をアップさせるには? 人間はそもそ

克己
田中克成さんの実父「プロ精神八か条」とは

今日も田中克成さんのメルマガからのシェア+アウトプットです。

イメージ
心に突き刺さる起業家の言葉「お前は何がしたい?」

こんにちは。起業家のマインドで感銘を受けた動画の、シェアとアウトプッ

→もっと見る