2011/12/30

【PHP】FacebookのGraphAPIを使ってウォールを投稿するサンプル【Facebook】

ということでPHPでFacebookのGraphAPIを使ってウォールを投稿するサンプルを作りました。

※FacebookのGraphAPIを使うにはOAuth認証を使うのでこちらより必要なモノを取得して
ください

必要なもの
・App ID ・App Secret 前回の記事を参考にしてください。 サービスのURLを   http://example.com/index.php という感じに設定しました。 またmixiGraphAPIだとリダイレクト先のURLも指定するのですが、FacebookのOAuth認証では リダイレクトURLをパラメータに含める方式なのでプログラム側で指定します。 リダイレクトURLはプログラム側で   http://example.com/callback.php のような感じに設定しました。 通常リダイレクトURLにてアクセストークンの保存処理などを行うのですが、今回は サンプルということでそのままウォールに投稿もしています。 下記ソースです。 index.php
<?php
// リクエストパラメータ
$param = array(
    'client_id'     => 'App ID',
    'redirect_uri'  => 'リダイレクトURL',
    'scope'         => 'status_update,offline_access',
    'response_type' => 'code',
    'display'       => 'page',
);

// 認証画面へリダイレクト
header('Location: https://www.facebook.com/dialog/oauth?' . http_build_query($param));
callback.php
<?php
if ($_GET['code'] != '')
{
    // アクセストークンの取得
    $access_token = getAccessToken($_GET['code']);
}

if ($access_token != '')
{
    // ウォールへ投稿
    $text = 'test message';
    $res = postUpdate($access_token, $text);
}

/**
 * アクセストークンの取得
 * @param  string $code         Facebookからのレスポンス
 * @return string $access_token アクセストークン
 */
function getAccessToken($code)
{
    // アクセストークン取得用URL
    $auth_url = 'https://graph.facebook.com/oauth/access_token';
    // リクエストパラメータ
    $param = array(
        'client_id'     => 'App ID',
        'client_secret' => 'App Secret',
        'code'          => $code,
        'redirect_uri'  => 'リダイレクトURL',
    );
    $auth_url .= '?' . http_build_query($param);

    // cURLでアクセストークンを取得
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_URL, $auth_url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $param);

    $res = curl_exec($ch);
    curl_close($ch);
    parse_str($res, $res_array);

    return $res_array['access_token'];
}

/**
 * Facebookのウォールへ投稿します。
 * @param  string      $access_token アクセストークン
 * @param  string      $text         投稿内容
 * @return assoc_array $res          Facebookからのレスポンス
 */
function postUpdate($access_token, $text)
{
    // ウォール投稿API URL
    $post_url = 'https://graph.facebook.com/me/feed';

    $ch = curl_init();
    $param = array(
        'access_token' => $access_token,
        'message'      => $text,
    );

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_URL, $post_url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $param);

    $res = curl_exec($ch);
    curl_close($ch);

    return $res;
}
流れは大体mixiGraphAPIと一緒でした。 ですのでそちらの方も参考にしていただければと思います。 終わり 関連記事: 【Facebook】FacebookのGraphAPIを使う準備

【Facebook】FacebookのGraphAPIを使う準備

ということで勉強がてらmixiの次はFacebookのGraphAPIを触ってみたいと思います。

まず、こちらにアクセスします。
ログイン要求画面が表示されるかもしれないですが、いつもどおりFacebookにログインする際に
使用しているパスワードでログインします。

下記の画面が表示されるかと思いますので、赤い四角で囲まれた
「新しいアプリケーションを作成」を押下します。
すると次のようなダイアログが出てきますので、必要な項目を入力します。 アプリケーション名と名前空間の登録になります。 今回はWebサイトアプリケーションの作成なので名前空間は使用していませんが入力する 必要があります。
次にセキュリティチェックのダイアログが出てきます。
僕は初めてのアプリケーション作成だったので次のダイアログが表示されました。 電話番号の登録が必要なようです。 赤で囲まれているアンカーをクリックし登録します。
すると下記のダイアログが表示されますので、国を選択し、 携帯のメールアドレスを入力します。
登録すると下記の画面にダイアログが遷移します。 ここでは登録したメールアドレスに来たメールにコードが書かれていますので そのコードを入力し認証を完了させます。
完了すると携帯電話登録のダイアログに戻りますのでダイアログを閉じます。
ダイアログを閉じるとまたセキュリティチェックがあるので書いてある文字を入力します。
上記が完了したらこちらのURLにアクセスし、先ほどのアプリケーションが 登録されているか確認しましょう。 下記のような画面が表示されますので赤で囲まれている「アプリを編集」を押下します。
下記画面が表示されますので必要な項目を入力していきます。 入力が完了したら「変更を保存」ボタンを押下し、赤で囲まれているリンクを押下します。
こちらの画面でも必要な項目を入力します。 入力が完了したら「変更を保存」ボタンを押下します。
これでアプリケーションの登録は完了です。 App ID と App Secret はアプリケーションを作成する際に使用します。 終わり 関連記事: 【PHP】FacebookのGraphAPIを使ってウォールを投稿するサンプル【Facebook】

2011/12/28

【プログラミング】OAuth認証のお話

今日はOAuth認証のことについていろいろ調べてみたのでそのことについて書いていきたいと
思います。

OAuthとは
OAuthとは 「認可情報の委譲」 を行うプロトコルです。 オースと読むらしいです。 要点としては
あらかじめ信頼関係があるサービス間でユーザの同意のもとセキュアにユーザの権限を 受け渡しする
というものです。
Oauth認証の相関図
OAuth認証の相関関係
OAuth認証は下記3つの相関関係でできています。 ・OAuthを提供するサービスプロバイダ(Twitterなど) ・OAuthを使ってサービスを作るコンシューマ ・サービスを使用するユーザ サービスプロバイダはOAuth認証と認証によって使用できるようにサービスを提供します。 コンシューマはユーザがOAuth認証を使って使用するサービスを提供します。 ユーザはコンシューマのサービスのアクセスを許可したり、許可を解除したりします。
OAuthの流れ
1.コンシューマがサービスプロバイダからOAuthの利用申請をする。   Consumer Key や Consumer Secret をサービスプロバイダから取得する。 2.ユーザがコンシューマのサービスにサービスプロバイダから   使用する権限を取得するよう要求する。 3.コンシューマがバックグラウンドでリクエストトークンを取得する。   ※先に4のフローに移行するサービスもあるようです。 4.コンシューマはサービスプロバイダに未認可のリクエストトークンを   パラメータに載せてリダイレクトさせる。 5.ユーザがサービスプロバイダにてアクセス権の委譲を許可する。   この際未認可のリクエストトークンをサービスプロバイダが許可済みにする。 6.サービスプロバイダがユーザをコンシューマへとリダイレクトさせる。 7.コンシューマが認可済みのリクエストトークンを使いバックグラウンドで   アクセストークンを取得する。 8.コンシューマがアクセストークンを使いOAuthにより提供されている   サービス情報にアクセスする。 終わり

2011/12/26

【PHP】mixiGraphAPIのOAuth認証用ライブラリを作成しました。【mixi】

ということで前回の記事で最後の方に言っていたmixiGraphAPIのOAuth認証用
ライブラリを作りました。

使い方等はreadme.txtなどに書いてありますが、至らない所が結構あると思うので
何かあればコメント欄にコメントをお願いします。

ダウンロードはこちらから

終わり


関連記事:
【mixi】mixiGraph APIを使うための準備
【PHP】phpでmixiGraphAPIを使ってmixiにつぶやきを投稿するサンプル【mixi】

2011/12/25

【雑記】久々のハンドリング

久々にハンドリングしました。
ベビーの時よりはかなり大人しくなりハンドリングもしやすく?なりました。
かなり前に記事にあげた写真よりだいぶ白くなったような気がします。
体長も60cm程になりました

終わり