Facebook の Permission 設定

Facebook の Permissions には3種類あり
User Data Permissions
Friends Data Permissions
Extended Data Permissions
があります
アプリは動作に必要なパーミッションをユーザに提示して承認を求めます
提示と承認の処理は
PHP SDK の場合
getLoginUrl() で行います
ちなみに、誕生日情報にアクセスするなら
user_birthday の権限が必要になります
これも
PHP SDK
の場合
getLoginUrl メソッドの
scope プロパティで設定します
複数のPermissions を設定したいなら
user_birthday,publish_stream のように
,で区切って指定すればOKです

Ubuntu で Apache2 + SSL

facebook アプリをつくるのに
https 対応させる必要があるため
Apache2 + SSL の設定をします
UbuntuでApache2+SSLしてみる
を参考にさせていただきました
すでに apache2 はインストール済み
sudo a2enmod ssl
でSSL適用
sudo /etc/init.d/apache2 restart
で設定反映のため再起動します
念のため
nmap 192.168.10.248
で確認
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
902/tcp open iss-realsecure
となり、
443 ポート開放を確認
引き続き、証明書の作成です
sudo mkdir /etc/apache2/ssl
でディレクトリ作成
sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
で証明書と秘密鍵発行
コマンドを実行すると
SSL 証明書で使うホスト名を入力してください。
これは生成される SSL 証明書内での「commonName」になります。
ホスト名:
とでてくるので localhost から
サーバーIPに変更します
今回は192.168.10.248
sudo cp /usr/share/doc/apache2.2-common/examples/apache2/extra/httpd-ssl.conf.gz /etc/apache2/sites-available
でファイルをコピー
cd /etc/apache2/sites-available
で移動してから
sudo gunzip httpd-ssl.conf.gz
で解凍
sudo vim httpd-ssl.conf
で設定ファイルを開き
Listen 443

#Listen 443
というようにコメントアウト
さらに
<VirtualHost _default_:443>

<VirtualHost *:443>
というように変更
DocumentRoot “/usr/share/apache2/default-site/htdocs”

DocumentRoot “/var/www”
ServerName www.example.com:443

ServerName 192.168.10.248:443
へ変更
192.168.10.248はサーバーIPです
SSLCertificateFile “/etc/apache2/server.crt”

SSLCertificateFile “/etc/apache2/ssl/apache.pem”
SSLCertificateKeyFile “/etc/apache2/server.key”

SSLCertificateKeyFile “/etc/apache2/ssl/apache.pem”
設定完了したら
sudo a2ensite httpd-ssl.conf
で設定ファイルを反映し
sudo /etc/init.d/apache2 restart
で apache2 再起動します

facebook PHP のSDK の処理

Facebook の PBP SDK を使った処理の流れです
PHP SDK ファイルをロード
Facebookクラスのインスタンス生成
してアプリ初期化
getUserメソッドでログイン状態を
チェック
未ログインならログイン処理
ログイン済みならアプリ本体の処理
を実行
流れとしては
こんなかんじです
ただし、PHP SDKを使うならシークレットキー
の指定が必須になります
もう少し詳しく流れを書くと
require_once
を使い
PHP SDKを読み込んで
次に
new を使い
facebookクラスのインスタンス生成
アプリへのログイン状態をこの
getUser メソッドで取得
このメソッドは
ログインS済みなならユーザIDを返し
未ログインなら0が返る
これを利用して、IFbぶ文でログイン判定をします
続いてログイン処理
これには
getLoginUrl() を使用
PHP SDK ver 3.0 以降では
redirect_url に
Facebook 上での
キャンバスページのurlを
指定しないとダメ
これをやらないと
ログイン後にフレーム解除状態で
アプリが表示されます

facebook PHP SDK の使い方

https://github.com/facebook/php-sdk
へアクセスし
zip をクリックしてファイルをダウンロード
facebook-php-sdk-v3.1.1-18-g70030bb.zip
がダウンロードできるファイルになります
cd コマンドで移動
cd ~/ダウンロード
unzip facebook-php-sdk-v3.1.1-18-g70030bb.zip
で解凍
次に、テストするために
ドキュメントルートディレクトリに解凍したファイルの中身を移動します
ドキュメントルートは
サーバー関連を操作するときに使いますので
検索するといろいろでてきます
ubuntu なら
/var/www/
xampp なら
/opt/lamp/htdocs/
がこれにあたります
私の場合
/var/www/facebook/
となっていますので
sudo cp -rp ~/facebook-php-sdk-70030bb/* /var/www/facebook/
これでOKです
試しにサンプルを使って確かめてみました
今回も
基礎から学ぶfacebook アプリ開発
に載っていたソースを使いました
今回の注意点は
‘secret’ => ‘シークレットキー’,));
の部分で
シークレットキーを
アプリの秘訣にかかれている数値に変えるということです

RHEL 初期設定

インスタンス作成と
SSH接続ができるようになったら、
ssh -i 鍵ファイル root@ipアドレス
で接続します
最初に
yum -y groupinstall “Development Tools”
で開発環境をインストールします
次に
ファイアウォール設定をします
Linux では
iptablesを使います
今回のばあい
書籍にあるスクリプトを使いました
スクリプト作成は
vim iptables.shで作成し
sh iptables.sh
で実行します
また、chkconfig で不要サービスを
停止できますが
choose_repo
はとめないようにしましょう
これは、AWS環境でyumを
つかうために必要なものです
次に、
useradd コマンドで一般ユーザーを作成しますが
RHEL では  公開鍵認証のため
一般ユーザをつくってもこのこの設定をしないとログインできません
useradd ユーザ名
で作成し
passwd ユーザ名
でパスワード設定します
終わったら
vim /etc/ssh/sshd_config
でログイン設定を編集し
PermitRootLogin noBanner /etc/ssh_banner
を記述するのですが
こんかいはそのまま root 権限で行います

RHELをAmazonEC2で

日経Linux 2012-02 を参考に
AmazonEC2 で RHEL を構築してみます
AWSのRHELは
LVMを使わない構成でルートファイルシステムに
インストールされます
では、さっそく構築開始
AmazonEC2にログインし
作成する場所を
Asia Pasific Tokyoにして
Launch Instance をクリック
次に、
Launch Clasic Wozardを選択し
使うイメージを
RedHatEnterPriseLinux 6.1 64bit
を選択
インスタンスタイプは
とりあえず
Micro Instance
インスタンス名は
RHELにしました
認証キーは、以前作ったものが
あるため、今回のは
Choose from your existing key Pairs
を選択
次に、セキュリティグループ設定になるので
Create a new Security Group を
クリックし
Group Name
に任意のグループ名
今回のは、security test
Group Description
に概要を書きます
今回のは、
RHEL test
としました
次に、
Create a new rule

HTTP
を選択し
Add rule
をクリック
あとは、そのまま続けていけば
できます
詳しい解説が
日経Linux 2012 02に載っていますので
そちらをみるとよりわかりやすいです

Facebook サンプル実行

キャンバスURLを設定したら
次に
詳細設定を変更します
Sandbox Mode:
を有効にすることでアプリが非公開になります
逆に、無効にするとアプリが公開されます
ここまで行ったら、設定を保存します
アプリ作成をゼロからだと確認するときに挫折しやすいので
今回は、

のサンプルを使いました
最近の書籍では
ソースがダウンロードできます
(書籍についているパスワードが必要なときがあります)
まずは、感覚をつかむため
http://www.c-r.com/
から
サンプルをダウンロードし
unzip sample.zip
で解凍
次に、
sudo mkdir /opt/lamp/htdocs/facebook/
でディレクトリを作成
sudo cp -p ~/ダウンロード/CHAPTER02/006/index.html /opt/lamp/htdocs/facebook/
でコピー
vim /opt/lamp/htdocs/facebookt/index.html

15行めの
appId: ‘アプリケーションID’,
のアプリケーションIDを
App ID の数値に書き換え保存
これで
サーバーIPアドレス/facebook/index.html
でアクセスすればアプリが実行できます
ちなみに、今回は XAMPP で行いました

netbook で facebook アプリ開発

https://developers.facebook.com/apps
へアクセスし
新しいアプリの作成をクリック
App Display Name
にアプリの表示名
App Namespace
にアプリの名前空間
を書き込みます
このあたりの参考には
最新版】Facebookページ Welcomeページの設定方法(iframe)
http://www.gb-jp.com/blog/social/1470.html
が参考になります
設定したアプリ名などが有効なら
vaid とされます
vaid は有効
App Namespace も問題ないなら
Available となります
available は利用可能
認証を済ませたら
次に
アプリをFacebookに結合する方法を選択してください
の中から
Facebook上のアプリを選択し
キャンバスURL

セキュリティで保護されたキャンバスURLを
入力します
基本的にはレンタルサーバーなどの
ドメインですが
XAMPPでもできます