こんにちは。 今日はとても短いブログです。 Continue reading Facebook MessengerのURLをたった4文字で表現する
こんにちは。 今日はとても短いブログです。 Continue reading Facebook MessengerのURLをたった4文字で表現する
こんにちは。 記事を書いていると、公開したあとに色々修正したくなりますよね。 そのときにOGPを今すぐ変更したい!というときがあると思います。 Facebookもクローラーを走らせて、記事を常にフレッシュにしようと取り組みをされているようですが、自分のタイミングでOGPを変更したいですよね。 今日はそんなときに便利な「Sharing Debugger」というのを紹介したいと思います。
Continue reading OGP設定を後から変更したい!そんなときに便利なFacebook公式ツール「Sharing Debugger」
みなさんこんにちは!
なんとなくFacebookのシェアボタンを実装しようと思ってFacebookのsharerを使って実装しようと思ったら謎のinvalid.invalidっていうエラーが出たのでなんなんだろうなぁと思って調べた結果を掲載します!同じエラーが出た人の助けになればいいなと思います!
Continue reading Facebook sharerでシェアしようとすると「リンクが見つかりませんでした」エラー invalid.invalid
こんにちは!
今回は僕がFacebookのタブページを制作するときに何個か気をつけていることがあるので記事にしておこうと思います。 誰かの役に立つことを信じて。
ちなみにタブページっていうのは昔の記事で言及しているもののことを指しています。
そこまで多くないし普通にページ制作してれば大丈夫なのですが、Facebookタブページ内では以下のことに気をつけながら制作しています。
widthは810px
810pxより大きく作ってしまうと、ページにスクロールバーが出てしまうのでここは気をつけて作っておいたほうがいいです。
Facebook JavaScript SDKを読み込む
Facebookタブページを作る際、Facebook JavaScript SDKが準備されているのでそれを読み込みましょう。
具体的には以下のコードになります。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" href="css/reset.css" type="text/css" />
<link rel="stylesheet" href="css/style.css" type="text/css" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/rollover.js"></script>
<script type="text/javascript" src="https://connect.facebook.net/ja_JP/all.js"></script>
<script language="JavaScript">
FB.init({
appId: [アプリID],
status: true,
cookie: true,
xfbml: true
});
window.fbAsyncInit = function() {
FB.Canvas.setAutoGrow();
}
</script>
<title></title>
</head>
<body>
</body>
<div id="fb-root"></div>
<script>
FB.Canvas.setAutoGrow({ width: 851, height: 1400 });
</script>
</body>
</html> こんにちは!
前から1回Facebookページのタブを作る流れをまとめたいと思っていたのでこの機会にまとめちゃいたいと思います! ちなみにFacebookページのタブとは、下の赤枠の部分のことをさしています。
それでは作っていきましょう。
昔書いた記事にFacebookアプリを作る方法があるのでそこまでやってください。
「設定」から「App Domains」の部分に今回使用するサーバーのドメインを登録しておいてください。
「Add Platform」をクリックして「ページタブ」を選択してページタブ情報を入力します。
「Page Tab Name」はページタブの名前を(Facebookページのタブ画像の下に表示される文字列です)、「Page Tab URL」には表示したいページのURLを、「Secure Page Tab URL」には「Page Tab URL」で指定したページにSSLが通っているURLを入力します。 「ページタブの画像」には画像を入れます。現在、111×74ピクセルのものしか入れることが出来ないので注意してください。
全て入力したら「変更を保存」をクリックします。
デフォルトではそのタブページは管理人しかアクセス出来ないようになっているのでサンドボックスモードを解除して誰でもアクセス出来るようにします。
ページタブのアイコンとは以下の部分です。
「App Details」の「アイコン」項目のとこにある「16×16」のほうに画像をアップロードします。 そこにアップロードした画像がアイコン画像になります。
FacebookアプリのIDを以下のURLに置き換えてアクセスします。
http://www.facebook.com/add.php?api_key=[FacebookID]&pages=1
以下のようなページに飛ぶのでページタブを設定したいページを選択してOKボタンをクリックします。 これでタブページ設定完了です!!!
これで一連の流れは終了です! Webページの制作になるとまた別に多少の知識が必要なのですが、それはまたの機会に!
結構参考になります
こんにちは!
普段からFacebookのAPIを叩いたりしているのですが、アクセストークンの取得の方法をなんとなくまとめる機会があったので、このブログでも軽くまとめていこうかなと思います。
アクセストークンとは、APIを叩くために必要な鍵みたいな存在です。 ちょっと重要な情報(非公開にしている投稿や画像、個人情報など)をAPI経由で取得したい!と思ったとき、その情報を取得しても構わない人にアクセストークンを渡すことによってデータへのアクセスを許可する役割があります。
とりあえず重要な情報にアクセスしようとするとアクセストークンが必要になるよ!ってことだけ覚えておくといいかもしれません。
今回取得するFacebookのアクセストークンは自分自身へのアクセストークンを取得する方法なので、例えば自分の持っているFacebookページの投稿に対するインプレッションを記録したり、メッセージを自分だけのアプリ上で送信出来るようにしたり、そういうことをするときに必要になるアクセストークンを取得していきます。
それでは早速やっていきましょう。
まずはFacebookアプリを作成しましょう。 以下のURLにアクセスしてFacebookアプリを作っていきましょう。 Facebook Developers
赤枠の部分をクリックして必要事項を埋めてアプリ制作しましょう。
アプリIDとアプリのシークレットキーを取得出来ました!
あなたの持っている適当なドメインを登録しておかないといけないので登録しておきましょう。 「Add platform」からウェブを追加して「AppDomain」の部分と「サイトURL」の部分にドメインを追加します。
アプリIDとシークレットキーを取得したら、自分がどの情報にアクセスしたいのかを以下のリファレンス内から探してきます。
今回は自分の誕生日を取得してみようと思うので、user_birthday パーミッションを以下のURLに書きます。 [アプリID]の部分にはさきほど取得したものを、[URL]のとこには持っているドメインのURLを入れてください。
https://graph.facebook.com/oauth/authorize?client_id=[アプリID]&scope=user_birthday&redirect_uri=[URL]
上記のURLにアクセスするとよく見る以下のような画面が出てきます。
以下のURLからアクセストークン一覧に飛ぶことが出来ます。 アクセストークン – Facebook Developers
その中からさきほど作ったアプリの名前を検索してみると、「User Token」の部分にランダムな英数字があると思います。 これが取得したいアクセストークンです!!
ちなみに横の「デバッグ」ボタンをクリックすると、そのアクセストークンがいつまで有効なのかや、どの情報にアクセス出来るのかの詳細を見ることが出来ます。
これでアクセストークン取得完了しました!!
それではあなたのFacebookのページを開いてください。(https://www.facebook.com/[ユーザー名] のURLで表されるページ) そのURLの「www」の部分を「graph」に変えてアクセスしてみてください。
情報がJSONで返ってくると思います。この時点で、誕生日情報は、設定で公開していない限り見えないはずです。
そのURLのあとにさきほど取得したアクセストークンをくっつけてアクセスしてみましょう。 URLとしては以下のような形になります。
https://graph.facebook.com/[ユーザー名]?acecss_token=[取得したアクセストークン]
どうでしょうか! さきほどよりたくさんの情報が取得出来たのではないでしょうか。 これでアクセストークンが有効であることが確認出来たと思います!!
アクセストークンの横にあった「デバッグ」ボタンを押すとわかると思うのですが、アクセストークンには有効期限があります。 おおよそ1時間だと思うのですが、1時間だけのアクセストークンだと意味のないときもあります。 その場合はアクセストークンの期間延長をするための方法があるのですがそれは昔書いた記事を参照してください。
快適なFacebookAPIライフを!!
参考本
みなさんあけましておめでとうございます! 2ヶ月くらい更新してなかったですが、ブログは書き続けてたほうがいいなぁと思っていたので新年からまた書き始めます!
それでは早速書いていきましょう。
最近Composerを使ってCakePHPでFacebookログインを実装したので、そこまでの流れをまとめておこうと思います。
composer.jsonから作っていきましょう。
CakePHP、Facebook PHP SDKをインストールするので以下のように書けばインストール出来ます。
{
"name": "facebook-login",
"repositories": [
{
"type": "pear",
"url": "http://pear.cakephp.org"
}
],
"require": {
"pear-cakephp/cakephp": "2.4.4",
"facebook/php-sdk": "dev-master"
}
}
composer.pharをダウンロードしてパッケージをインストールしていきます。
$ curl -s http://getcomposer.org/installer | php $ php composer.phar install
Bakeでプロジェクトを作成します。
$ vendor/bin/cake bake project $PWD --empty
これでブラウザからアクセスすると、いつもの緑画面が出てくると思います。
ここまでで大方終了しましたが忘れちゃいけないので CAKE_CORE_INCLUDE_PATH を書き換えること。
3箇所書き換えていきましょう。
webroot/index.php
define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . APP_DIR . DS . 'vendor' . DS . 'pear-pear.cakephp.org' . DS . 'CakePHP');
webroot/test.php
define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . APP_DIR . DS . 'vendor' . DS . 'pear-pear.cakephp.org' . DS . 'CakePHP');
Console/cake.php
$ds = DIRECTORY_SEPARATOR;
$dispatcher = 'Cake' . $ds . 'Console' . $ds . 'ShellDispatcher.php';
if (function_exists('ini_set')) {
$root = dirname(dirname(__FILE__));
// the following line differs from its sibling
// /app/Console/cake.php
ini_set('include_path', $root . $ds . 'vendor' . $ds . 'pear-pear.cakephp.org' . $ds . 'CakePHP' . PATH_SEPARATOR . ini_get('include_path'));
}
if (!include $dispatcher) {
trigger_error('Could not locate CakePHP core files.', E_USER_ERROR);
}
unset($paths, $path, $dispatcher, $root, $ds);
return ShellDispatcher::run($argv);
最後にデータベースをbakeして終了っと!
$ Console/cake bake db_config
次にFacebookアプリやFacebookSDKの読み込み、データベースの作成等を行っていきます。
以下のURLに飛び、Facebookアプリを「新規作成」し、アプリIDとシークレットをゲットしておいてください!
次にcomposerでいれたFacebook PHP SDKを読み込んでいきます。 PagesController.php で読み込んでいきましょう。
PagesController.php
<?php App::uses('AppController', 'Controller');
App::import('vendor', 'facebook/php-sdk/src/facebook');
最後にデータベースです。 今回は Admin テーブルを作成しその中にログインに必要な情報を事前に入れておこうと思います。 実際に試す場合は自分のFacebookIDを入れておいてください。
CREATE TABLE IF NOT EXISTS `admin` ( `id` int(11) NOT NULL AUTO_INCREMENT, `facebook_id` varchar(128) NOT NULL, `created` datetime NOT NULL, `modified` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; INSERT INTO `admin_user` (`id`, `facebook_id`, `created`, `modified`) VALUES (1, '自分のFacebookID', NOW(), NOW());
最後の最後に! routes.php 内でPagesControllerのルーティングが定められているのでそれをコメントアウトしておきます。
// Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
これで終了です。やっと本題にいきましょう!
さて、やっと本題です。 ログインの流れとしては、
こんな感じでやっていこうと思います。
一気にいきます。PagesController.phpにがばっと書いていきます。
PagesController.php
[
'authenticate' => [
'Form' => [
'userModel' => 'Admin'
]
],
// ログインページ
'loginAction' => ['controller' => 'pages', 'action' => 'index'],
// ログイン後リダイレクトページ
'loginRedirect' => ['controller' => 'pages', 'action' => 'my'],
// ログアウト後リダイレクト先
'logoutRedirect' => ['controller' => 'pages', 'action' => 'index'],
// エラーメッセージ
'authError' => 'Admin Only'
]
];
public function beforeFilter(){
$this->facebook = new Facebook([
'appId' => '取得したAppId',
'secret' => '取得したAppSecret',
'cookie' => true
]);
$this->Auth->allow('index', 'login');
}
protected function _authFacebook(){
$login_url = $this->facebook->getLoginUrl(['redirect_uri' => Router::fullBaseUrl() . Router::url(['controller'=>'pages', 'action'=>'login'])]);
return $this->redirect($login_url);
}
public function login(){
$this->autoRender = false;
$fb_id = $this->facebook->getUser();
$login_info = ClassRegistry::init('Admin')->find('first', ['conditions' => ['Admin.facebook_id' => $fb_id]]);
if(isset($login_info)){
if($this->Auth->login($login_info['Admin'])){
return $this->redirect(['action' => 'my']);
} else {
return $this->redirect(['action' => 'index']);
}
} else {
return $this->redirect(['action' => 'index']);
}
}
public function logout(){
$this->Auth->logout();
return $this->redirect(['action' => 'index']);
}
public function index(){
if($this->Auth->loggedIn()){
return $this->redirect(['action' => 'my']);
}
if($this->request->is('post')){
$this->_authFacebook();
}
}
public function my(){
}
}
わからなければ質問なり公式ドキュメントを参照してください!!!
Modelのフォルダ内に Admin.php を下記のような感じで作成します。
<?php App::uses('AppModel', 'Model');
class Admin extends AppModel {
public $useTable = 'admin';
}
Viewは index.ctp と my.ctp を作ります。
index.ctp
Form->create('Admin', ['method' => 'post']);?>
Form->button('Facebookログイン');?>
my.ctp
マイページ
Html->link('ログアウト', ['controller'=>'pages', 'action'=>'logout']);?>
これでFacebookログインが実装できました!!
いかがでしたでしょうか。 なんとなくの流れは理解出来たかなぁと思います。 何かわからない点がありましたらコメントやTwitterで聞いていただければと思います!
CakePHP本が続々出ていますね。
みなさんこんにちは
最近Facebookを見ていて、以下の画像のように、今までの画像サイズとは違うものがよく流れてくるようになってました。
398×208!?!? んーよくわからん。 確かに前のOGP変更で推奨画像サイズが1500×1500になりましたが全部の記事に1500×1500の画像を貼るわけにはいかない!てか貼れない!!
ということで最低どのくらいのサイズがあれば上記の画像の大きい画像を出すことが出来るのかを色々作って調べてみました。 既に調べている記事も発見したので参考記事としてリンク貼っておきますね。
参考:FacebookのOGP画像サイズはどんなサイズがいいの
調べた画像は全部下に貼っておきますね
多少ネタバレ感のある画像ですが、とりあえず検証検証♪
表示すらされない・・・orz
うーん
お腹減ってきません?
最近のおすすめは食パンです
コンビニで売ってる8枚切りがおすすめです・・・ってきたー!
ってことで、Facebookで最近出てきてる大きな画像を出すためには、最低400×300くらいの大きさがあれば表示されることがわかりました。(13年9月11日現在) もうちょっと1ピクセル単位で出せばいいのかもしれませんが、まぁ大体わかれば満足ですよね?(僕が)
てことで、みなさん。最近タイムラインに流れてきている大きな画像を出すためには400×300以上の大きさの画像を使いましょうってことで。 また仕様変更がかかるかもしれませんが、とりあえずの対処としてはこれで十分なんではないでしょうか。 Facebookの推奨は1500×1500ですからね・・・
やっぱり売れてる本は面白かったです
みなさんこんにちは。
FacebookのGraphAPIってやっぱ楽しいですね。 個人情報をここまで簡単に取れるAPIをいじれるのはとても楽しいですよ。
今回はPHPを使ってあるページにいいねが押してあるかどうかを判別する方法を紹介します。 簡単なことではありますが、2通りの方法を紹介します。 Continue reading GraphAPIを用いてページにいいねが押してあるか判別する方法
ついに今日から25日まで続くAdvent Calenderが始まりました。 CakePHP Advent Calender2012の1日目を担当させていただく、たがみ(@DAI199)です。
Cakeを使い始めて半年程度の新米ですが、僕の知識をみなさんに共有するために今回の記事を書きたいと思います。
CakePHPアドベントカレンダー2012本家 http://www.adventar.org/calendars/40 Twitterハッシュタグ #cakeadvent2012
普段はFacebookと連携したアプリを量産しているため、今回の記事では、CakePHPとFacebookを連携し、ちょっとしたアプリを作ってみたいと思います。 デモアプリはこちら
>>> 女の子の画像一覧を見てみる
それでは早速Facebookログインを実装していきましょう。 以下のURLからFacebookSDKをダウンロードします。 >>> https://github.com/facebook/facebook-php-sdk
それをインストールしたCakePHPのapp/Vendorフォルダに入れます。ここではフォルダ名は「facebook」へ変更しました。
次に「AppController.php」に以下のコードを書きます。ここでやっていることは、Facebookに接続することと、Facebookでログイン出来たことを確認するためにSessionに書き込むことです。
<?php
App::uses('Controller', 'Controller');
class AppController extends Controller {
public $facebook;
public $helper = array('Html', 'Form', 'Session');
function beforeFilter(){
App::import('Vendor', 'facebook/src/facebook');
$this->facebook = new Facebook( array(
'appId' => 'APPID',
'secret' => 'APPSECRET',
'cookie' => true
));
}
// Facebookで接続するときにOAuthを通す
public function authFacebook() {
$login_url = $this->facebook->getLoginUrl(array('scope' => 'email,publish_stream,user_birthday,user_education_history,user_likes'));
$this->redirect($login_url);
}
public function connectFb(){
$fb = $this->facebook->getUser();
if(empty($fb)){
$this->authFacebook();
}
$this->Session->write('Facebook.id', $fb);
}
}
上記のコードのAPPID,APPSECRETの部分はFacebookアプリを作成していれてください。 Facebookアプリを作成するためには以下のURLから作成します。 >>> https://developers.facebook.com/
これでFacebookログインが実装出来ました。
初期画面でFacebookログインボタンを表示して、クリックするとdisplayのほうへリダイレクトされます。 以下コードになります。
【Controller】 FacebookController.php
<?php
class FacebookController extends AppController {
public function index(){
if($this->request->is('post')){
$this->redirect(array('action'=>'display'));
}
}
public function display(){
// Facebookへ接続
$this->connectFb();
$fb = $this->facebook->getUser();
// Friend List を取得
try {
$me = $this->facebook->api('/me');
$friend_list = $this->facebook->api("{$fb}/friends?fields=gender");
} catch (FacebookApiException $e){
error_log($e);
}
$this->set(compact('fb'));
$this->set(compact('me'));
$this->set(compact('friend_list'));
}
}
Viewのほうはこんな感じに書いてみました。
【View】 index.ctp
<form action="<?php echo $this->Html->url(array('action'=>'index'));?>" method="post">
<button>Facebookログイン</button>
</form>
display.ctp
<h1>自分の顔</h1>
<img src="https://graph.facebook.com/<?php echo $fb;?>/picture?width=150" alt="" />
<h2>異性の顔((´^ω^))</h2>
<?php for($i=0; $i < count($friend_list['data']); $i++):?>
<?php if($me['gender'] != $friend_list['data'][$i]['gender']):?>
<a href="https://www.facebook.com/<?php echo $friend_list['data'][$i]['id'];?>">
<img src="https://graph.facebook.com/<?php echo $friend_list['data'][$i]['id'];?>/picture?width=100&height=100" alt="" />
</a>
<?php endif;?>
<?php endfor;?>
以上のコードによりGraphAPIを叩くことが出来ました。 GraphAPIについては、Facebookの公式ドキュメントを読むとよいです。
さて、それではログインしてみましょう。 自分の友達の女の子でもうはうはです。 あ、もちろん女性の方は男性が表示されます。 女性の方が女性を見たい場合は、Viewの部分をちょちょっといじると出来ますよ。
デモはこちら >>> 女の子一覧を見てうはうは
すごい簡単なアプリですが、Facebookを使ったアプリを作ったことがない人にとっては新鮮なのではないでしょうか。 これをもう少し改良すれば異性を解析するアプリを作ったり本格的なアプリも出来そうですね。
初めてのAdventCalenderで緊張していますが、わかりにくいこと、間違っているとこ、こうしたほうがいいよ!ってとこがあればぜひコメントを残してくださるとありがたいです。
CakePHP AdventCalender2012 2日目の担当は、@fukayatsuさんです。よろしくお願いします!!