fb.php をいじってみる

CanvasページがIFrameの場合、どのようにfb.phpが呼び出されているかを確認してみましょう。
fb.php を以下のように修正します。

<?php
require_once 'facebook/facebook.php';

$facebook = new Facebook(array(
  'appId' => 'XXX',
  'secret' => 'XXX',
  'cookie' => true,
));

$session = $facebook->getSession();

echo "<br/><br/>\n\nsession --- <br/>\n";
print_r($session);

echo "<br/><br/>\n\n_SESSION --- <br/>\n";
print_r($_SESSION);

echo "<br/><br/>\n\n_GET --- <br/>\n";
print_r($_GET);

echo "<br/><br/>\n\n_POST --- <br/>\n";
print_r($_POST);

echo "<br/><br/>\n\n_COOKIE --- <br/>\n";
print_r($_COOKIE);

echo "<br/><br/>\n\n_SERVER --- <br/>\n";
print_r($_SERVER);
?>

そして、未ログイン時とログイン時の結果がどうなるかを以下にまとめてみました。一度ログインするとクッキーに認証情報が保存されますので、一度クッキー(localhostドメインのクッキーになります)をクリアしてからお試しください。

未ログイン時

session ---


_SESSION ---
Notice: Undefined variable: _SESSION

_GET ---
Array ( [dummy] => )

_POST ---
Array ( [signed_request] => ながーい文字列 )

_COOKIE ---
Array ( )

_SERVER ---
Array (
[HTTP_HOST] => localhost
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 5.0; ja; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15 (.NET CLR 3.5.30729)
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[HTTP_ACCEPT_LANGUAGE] => ja,en-us;q=0.7,en;q=0.3
[HTTP_ACCEPT_ENCODING] => gzip,deflate
[HTTP_ACCEPT_CHARSET] => Shift_JIS,utf-8;q=0.7,*;q=0.7
[HTTP_KEEP_ALIVE] => 115
[HTTP_CONNECTION] => keep-alive
[HTTP_REFERER] => http://apps.facebook.com/XXX/
[CONTENT_TYPE] => application/x-www-form-urlencoded
[CONTENT_LENGTH] => 214
[PATH] => C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;C:\ruby\bin;;C:\php\cli;C:\Program Files\MySQL\MySQL Server 5.1\bin;C:\php5;C:\Program Files\TortoiseSVN\bin
[SystemRoot] => C:\WINNT
[COMSPEC] => C:\WINNT\system32\cmd.exe
[PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
[WINDIR] => C:\WINNT
[SERVER_SIGNATURE] =>
[SERVER_SOFTWARE] => Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.1
[SERVER_NAME] => localhost
[SERVER_ADDR] => 127.0.0.1
[SERVER_PORT] => 80
[REMOTE_ADDR] => 127.0.0.1
[DOCUMENT_ROOT] => C:/Program Files/Apache Software Foundation/Apache2.2_with_ssl/htdocs
[SERVER_ADMIN] => admin@localdomain
[SCRIPT_FILENAME] => C:/Program Files/Apache Software Foundation/Apache2.2_with_ssl/htdocs/fb.php
[REMOTE_PORT] => 2137
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => POST
[QUERY_STRING] => dummy
[REQUEST_URI] => /fb.php?dummy
[SCRIPT_NAME] => /fb.php
[PHP_SELF] => /fb.php
[REQUEST_TIME] => 1299745477
)

ログイン後1回目のアクセス(SSL接続になってます)

session ---
Array (
[uid] => XXX
[access_token] => XXX
[expires] => 0
[sig] => XXX
)

_SESSION ---
Notice: Undefined variable: _SESSION in C:\Program Files\Apache Software Foundation\Apache2.2_with_ssl\htdocs\fb.php on line 22

_GET ---
Array ( [dummy] => )

_POST ---
Array ( [signed_request] => ながーい文字列 )

_COOKIE ---
Array ( )

_SERVER ---
Array (
[HTTPS] => on
[SSL_TLS_SNI] => localhost
[SSL_SERVER_S_DN_C] => --
[SSL_SERVER_S_DN_ST] => SomeState
[SSL_SERVER_S_DN_L] => SomeCity
[SSL_SERVER_S_DN_O] => SomeOrganization
[SSL_SERVER_S_DN_OU] => SomeOrganizationalUnit
[SSL_SERVER_S_DN_CN] => localhost.localdomain
[SSL_SERVER_S_DN_Email] => root@localhost.localdomain
[SSL_SERVER_I_DN_C] => --
[SSL_SERVER_I_DN_ST] => SomeState
[SSL_SERVER_I_DN_L] => SomeCity
[SSL_SERVER_I_DN_O] => SomeOrganization
[SSL_SERVER_I_DN_OU] => SomeOrganizationalUnit
[SSL_SERVER_I_DN_CN] => localhost.localdomain
[SSL_SERVER_I_DN_Email] => root@localhost.localdomain
[SSL_VERSION_INTERFACE] => mod_ssl/2.2.17
[SSL_VERSION_LIBRARY] => OpenSSL/0.9.8o
[SSL_PROTOCOL] => TLSv1
[SSL_SECURE_RENEG] => true
[SSL_COMPRESS_METHOD] => NULL
[SSL_CIPHER] => AES256-SHA
[SSL_CIPHER_EXPORT] => false
[SSL_CIPHER_USEKEYSIZE] => 256
[SSL_CIPHER_ALGKEYSIZE] => 256
[SSL_CLIENT_VERIFY] => NONE
[SSL_SERVER_M_VERSION] => 3
[SSL_SERVER_M_SERIAL] => 79B9
[SSL_SERVER_V_START] => Jul 31 02:38:53 2009 GMT
[SSL_SERVER_V_END] => Jul 31 02:38:53 2010 GMT
[SSL_SERVER_S_DN] => /C=--/ST=SomeState/L=SomeCity/O=SomeOrganization/OU=SomeOrganizationalUnit/CN=localhost.localdomain/emailAddress=root@localhost.localdomain
[SSL_SERVER_I_DN] => /C=--/ST=SomeState/L=SomeCity/O=SomeOrganization/OU=SomeOrganizationalUnit/CN=localhost.localdomain/emailAddress=root@localhost.localdomain
[SSL_SERVER_A_KEY] => rsaEncryption
[SSL_SERVER_A_SIG] => sha1WithRSAEncryption
[HTTP_HOST] => localhost
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 5.0; ja; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15 (.NET CLR 3.5.30729)
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[HTTP_ACCEPT_LANGUAGE] => ja,en-us;q=0.7,en;q=0.3
[HTTP_ACCEPT_ENCODING] => gzip,deflate
[HTTP_ACCEPT_CHARSET] => Shift_JIS,utf-8;q=0.7,*;q=0.7
[HTTP_KEEP_ALIVE] => 115
[HTTP_CONNECTION] => keep-alive
[HTTP_REFERER] => https://apps.facebook.com/XXX/
[CONTENT_TYPE] => application/x-www-form-urlencoded
[CONTENT_LENGTH] => 391
[PATH] => C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;C:\ruby\bin;;C:\php\cli;C:\Program Files\MySQL\MySQL Server 5.1\bin;C:\php5;C:\Program Files\TortoiseSVN\bin
[SystemRoot] => C:\WINNT
[COMSPEC] => C:\WINNT\system32\cmd.exe
[PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
[WINDIR] => C:\WINNT
[SERVER_SIGNATURE] =>
[SERVER_SOFTWARE] => Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.1
[SERVER_NAME] => localhost
[SERVER_ADDR] => 127.0.0.1
[SERVER_PORT] => 443
[REMOTE_ADDR] => 127.0.0.1
[DOCUMENT_ROOT] => C:/Program Files/Apache Software Foundation/Apache2.2_with_ssl/htdocs
[SERVER_ADMIN] => admin@example.co.jp
[SCRIPT_FILENAME] => C:/Program Files/Apache Software Foundation/Apache2.2_with_ssl/htdocs/fb.php
[REMOTE_PORT] => 2143
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => POST
[QUERY_STRING] => dummy
[REQUEST_URI] => /fb.php?dummy
[SCRIPT_NAME] => /fb.php
[PHP_SELF] => /fb.php
[REQUEST_TIME] => 1299745543
)

ログイン後2回目のアクセス(クッキーにログイン情報が送られてくる)

session ---
Array (
[uid] => XXX
[access_token] => XXX
[expires] => 0
[sig] => XXX
)

_SESSION ---
Notice: Undefined variable: _SESSION in C:\Program Files\Apache Software Foundation\Apache2.2_with_ssl\htdocs\fb.php on line 22

_GET ---
Array ([dummy] => )

_POST ---
Array ([signed_request] => ながーい文字列 )

_COOKIE ---
Array ([fbs_154130447977889] => "uid=XXX&access_token=XXX&expires=0&sig=XXX" )

_SERVER ---
Array (
[HTTPS] => on
[SSL_TLS_SNI] => localhost
[SSL_SERVER_S_DN_C] => --
[SSL_SERVER_S_DN_ST] => SomeState
[SSL_SERVER_S_DN_L] => SomeCity
[SSL_SERVER_S_DN_O] => SomeOrganization
[SSL_SERVER_S_DN_OU] => SomeOrganizationalUnit
[SSL_SERVER_S_DN_CN] => localhost.localdomain
[SSL_SERVER_S_DN_Email] => root@localhost.localdomain
[SSL_SERVER_I_DN_C] => --
[SSL_SERVER_I_DN_ST] => SomeState
[SSL_SERVER_I_DN_L] => SomeCity
[SSL_SERVER_I_DN_O] => SomeOrganization
[SSL_SERVER_I_DN_OU] => SomeOrganizationalUnit
[SSL_SERVER_I_DN_CN] => localhost.localdomain
[SSL_SERVER_I_DN_Email] => root@localhost.localdomain
[SSL_VERSION_INTERFACE] => mod_ssl/2.2.17
[SSL_VERSION_LIBRARY] => OpenSSL/0.9.8o
[SSL_PROTOCOL] => TLSv1
[SSL_SECURE_RENEG] => true
[SSL_COMPRESS_METHOD] => NULL
[SSL_CIPHER] => AES256-SHA
[SSL_CIPHER_EXPORT] => false
[SSL_CIPHER_USEKEYSIZE] => 256
[SSL_CIPHER_ALGKEYSIZE] => 256
[SSL_CLIENT_VERIFY] => NONE
[SSL_SERVER_M_VERSION] => 3
[SSL_SERVER_M_SERIAL] => 79B9
[SSL_SERVER_V_START] => Jul 31 02:38:53 2009 GMT
[SSL_SERVER_V_END] => Jul 31 02:38:53 2010 GMT
[SSL_SERVER_S_DN] => /C=--/ST=SomeState/L=SomeCity/O=SomeOrganization/OU=SomeOrganizationalUnit/CN=localhost.localdomain/emailAddress=root@localhost.localdomain
[SSL_SERVER_I_DN] => /C=--/ST=SomeState/L=SomeCity/O=SomeOrganization/OU=SomeOrganizationalUnit/CN=localhost.localdomain/emailAddress=root@localhost.localdomain
[SSL_SERVER_A_KEY] => rsaEncryption
[SSL_SERVER_A_SIG] => sha1WithRSAEncryption
[SSL_SESSION_ID] => 6365E6F7D5D01AF80134C7D8B2CC391BD9112D521EF6961B3411029900404BC5
[HTTP_HOST] => localhost
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 5.0; ja; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15 (.NET CLR 3.5.30729)
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[HTTP_ACCEPT_LANGUAGE] => ja,en-us;q=0.7,en;q=0.3
[HTTP_ACCEPT_ENCODING] => gzip,deflate
[HTTP_ACCEPT_CHARSET] => Shift_JIS,utf-8;q=0.7,*;q=0.7
[HTTP_KEEP_ALIVE] => 115
[HTTP_CONNECTION] => keep-alive
[HTTP_REFERER] => https://apps.facebook.com/XXX/
[HTTP_COOKIE] => fbs_154130447977889=%22uid%3DXXX%26access_token%3DXXX%26expires%3D0%26sig%3DXXX%22
[CONTENT_TYPE] => application/x-www-form-urlencoded
[CONTENT_LENGTH] => 391
[PATH] => C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;C:\ruby\bin;;C:\php\cli;C:\Program Files\MySQL\MySQL Server 5.1\bin;C:\php5;C:\Program Files\TortoiseSVN\bin
[SystemRoot] => C:\WINNT
[COMSPEC] => C:\WINNT\system32\cmd.exe
[PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
[WINDIR] => C:\WINNT
[SERVER_SIGNATURE] =>
[SERVER_SOFTWARE] => Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.1
[SERVER_NAME] => localhost
[SERVER_ADDR] => 127.0.0.1
[SERVER_PORT] => 443
[REMOTE_ADDR] => 127.0.0.1
[DOCUMENT_ROOT] => C:/Program Files/Apache Software Foundation/Apache2.2_with_ssl/htdocs
[SERVER_ADMIN] => admin@example.co.jp
[SCRIPT_FILENAME] => C:/Program Files/Apache Software Foundation/Apache2.2_with_ssl/htdocs/fb.php
[REMOTE_PORT] => 2163
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => POST
[QUERY_STRING] => dummy
[REQUEST_URI] => /fb.php?dummy
[SCRIPT_NAME] => /fb.php
[PHP_SELF] => /fb.php
[REQUEST_TIME] => 1299745570
)

次回はこの結果を元に、Canvasページの仕様を考察してみましょう。