nkjmkzk.net

powered by Kazuki Nakajima

新しくなったForce.com OAuth Toolkit for phpの使い方

先日、Force.comのREST APIをphpから利用する際に便利なOAuth Toolkitを抜本的に書き直しました。新しくなってさらに簡単になったこのツールの使い方をご紹介しておきます。

まずはダウンロード。こちらからどうぞ。Webサーバの適当なディレクトリに保存してください。

https://github.com/nkjm/Force.com-OAuth-Toolkit-for-PHP

次に認証が必要なスクリプトにoauth.phpをインポートします。

$ vi index.php
require_once 'oauth.php';

同スクリプトでoauthクラスのインスタンスを作成します。

$oauth = new oauth(CLIENT_ID, CLIENT_SECRET, CALLBACK_URL, [LOGIN_URL], [CACHE_DIR]);
  • LOGIN_URLとCACHE_DIRはオプショナルです。
  • CACHE_DIRは認証後に発行されるaccess token, refresh token, instance urlを保存するためのディレクトリです。auth_with_password()を用いた場合のみ利用されます。

oauthのインスタンスメソッドでOAuth認証を実施します。認証には2通りあります。1つはアクセスコードを用いる方法で、ユーザごとに認証を要する場合に利用します。

$oauth->auth_with_code([LIFETIME]);

LIFETIMEはオプショナルで、アクセストークンをリフレッシュする間隔を分単位で指定できます。

もう1つはusername/passwordを用いる方法で、不特定のユーザからアクセスを受け付ける場合に利用します。HomePageのバックエンドとしてForce.comを接続し、問い合わせ情報などをForce.comに取り込みたい場合などに適しています。

$oauth->auth_with_password(USERNAME, PASSWORD);

USERNAME, PASSWORDはあるユーザをゲストアカウントと見たてて、その情報をセットします。

認証が成功すると$oauthには下記のパラメータにそれぞれaccess token, refresh token, instance urlの情報がセットされ、この情報を使ってREST APIにアクセスできます。

  • $oauth->access_token
  • $oauth->refresh_token
  • $oauth->instance_url

oauth_with_password()を使用する場合は事前にCACHE_DIRにしているディレクトリ(デフォルトではスクリプトと同じディレクトリ)が存在し、適切なパーミッションが設定されている必要があります。パーミッションはWebサーバプロセスのオーナーユーザー/グループの(一般的にはnobodyなど)からのRead/Writeアクセスが必要です。

OAuth Toolkitのセットアップと実行はこれだけです。

下記のサンプルコードで全体の流れをつかんでいただければ幸いです。

require_once "oauth.php";

// You have to change following paramenter depending on your remote access setting.
define('CLIENT_ID', '3MVG9rFJvQRVOvk40dRq5u_ZA0eT2KvZCvZq.XeA1hFtgc3PITGlLMp3V_kKIwtc6IaEGWkIO3cOu0IgVmujh');
define('CLIENT_SECRET', '1136279981407985294');
define('CALLBACK_URL', 'https://sugoisurvey.nkjmkzk.net');

$oauth = new oauth(CLIENT_ID, CLIENT_SECRET, CALLBACK_URL);
$oauth->auth_with_code();

$query = "select name from session__c";
$url = $oauth->instance_url . "/services/data/v24.0/query?q=" . urlencode($query);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Authorization: OAuth " . $oauth->access_token));
$response = json_decode(curl_exec($curl), true);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ( $status != 200 ) {
    die("curl failed");
}
curl_close($curl);
return($response);

with 2 comments

Written by 中嶋 一樹

5月 15th, 2012 at 1:50 pm

Posted in Uncategorized

Tagged with , ,

2 Responses to '新しくなったForce.com OAuth Toolkit for phpの使い方'

Subscribe to comments with RSS or TrackBack to '新しくなったForce.com OAuth Toolkit for phpの使い方'.

  1. [...] あたらしいOAuth Toolkitの使い方はこちら。 [...]

  2. [...] まずOAuth2.0でアクセストークンとインスタンスURLを取得します。これはこの記事の範疇を超えるのでこのあたりの記事を別途参照ください。 また、以下の例はではインスタンスURLはhttps://na14.salesforce.comとして話を進めます。 [...]

Leave a Reply