はじめに
PHP5からSalesforce REST APIを呼び出して、SalesforceのForce.comカスタムオブジェクトにレコードを追加するサンプルプログラムについて記します。
また、Force.comカスタムオブジェクトに登録したレコード一覧を表示するサンプルプログラムも合わせて記します。
環境
SalesforceのDeveloper EditionにForce.comカスタムオブジェクトを作成して試しました。
PHPからSalesforce REST APIの呼び出しについては、AWSのEC2インスタンス(Amazon Linux)にPHP 5.3.29をインストールし、PHPのサンプルプログラムを作成して試しました。
EC2インスタンスは以下のAMIで作成しました。
・Amazon Linux AMI 2016.03.3 (HVM), SSD Volume Type - ami-374db956
PHPからSalesforce REST APIの呼び出しについては、Force.com-OAuth-Toolkit-for-PHPを使用させて頂きました。ありがとうございました。
事前準備
(1) https://login.salesforce.com/ へログインします。
(2) SalesforceにForce.comアプリケーション及びカスタムオブジェクトを作成します。
Salesforce Force.comアプリケーション及びカスタムオブジェクト作成手順は以下をご参照下さい。
今回の例として、カスタムオブジェクト作成時には、以下のカスタム項目を追加します。
カスタム項目名 | API参照名 | データ型 |
---|---|---|
user_name | create_date__c | テキスト型 |
user_email | user_email__c | テキスト型 |
create_date | create_date__c | 日付型 |
(3) 作成したForce.comアプリケーションにOAuth2でアクセス出来るよう設定を開始します。
Salesforceコンソールの画面上の「設定」をクリックします。
画面左側の「ビルド」->「作成」->「アプリケーション」をクリックします。
「接続アプリケーション」の「新規」をクリックします。
(4) 作成したForce.comアプリケーションをOAuth2でアクセス出来るよう公開します。
以下を参考にしながら、Force.comアプリケーションのOAuth設定を行います。
今回の例では「接続アプリケーション名」を「testobject」としてアプリケーションを公開します。
「OAuth設定の有効化」にチェックをつけます。
以下の画面のように設定を入力して「保存」をクリックします。
(5) Force.comアプリケーションのOAuth2コンシューマキーとコンシューマシークレットを確認します。
前述の設定が完了すると「接続アプリケーション名 testobject」画面が表示されます。
前述の設定が完了すると、Force.comアプリケーションにOAuthでアクセス出来るようになり、Salesforce REST APIによりForce.comアプリケーションへ接続し、カスタムオブジェクトへのレコード追加といった操作が可能になります。
「接続アプリケーション名 testobject」画面では、後述の手順で使用するOAuth2コンシューマキーとコンシューマシークレットを確認します。
「コンシューマ鍵」がOAuthコンシューマキー、
「コンシューマの秘密」がOAuthコンシューマシークレットになります。
「コンシューマ鍵」のキー文字列を確認します。
「コンシューマの秘密」は「クリックして公開」をクリックしてシークレット文字列を確認します。
(6) Force.comアプリケーションへのOAuthアクセスを許可するIPアドレスを指定します。
Force.comアプリケーションへOAuthアクセス可能なIPアドレスを制限する事が出来ます。
今回の例では「198.51.100.10」からのアクセスのみ許可するよう設定します。
「接続アプリケーション名 testobject」画面の下にある「OAuth Webサーバフローの信頼済み IP 範囲」の「新規」をクリックします。
「アプリケーションバージョン 信頼済み IP 範囲の編集」画面が表示されます。
「開始IPアドレス」及び「終了IPアドレス」に「198.51.100.10」と入力して「保存」をクリックします。
「接続アプリケーション名 testobject」画面が表示されるので「OAuth Webサーバフローの信頼済み IP 範囲」にアクセス許可を追加したIPアドレスが表示されている事を確認します。
(7) Salesforce REST API接続用のSalesforceユーザアカウント・プロファイル・権限セットを作成します。
Salesforceコンソールの画面上の「設定」をクリックします。
画面左側の「管理」->「ユーザの管理」->「プロファイル」をクリックします。
「プロファイルのコピー」画面が表示されます。
「既存のプロファイル」は「標準ユーザ」を選択します。
「プロファイル名」には「テストオブジェクトプロファイル」と入力して「保存」をクリックします。
プロファイル「テストオブジェクトプロファイル」が作成されて、「プロファイル - テストオブジェクトプロファイル」画面が表示されます。「編集」をクリックします。
「プロファイル編集 - テストオブジェクトプロファイル」画面が表示されます。
「カスタムアプリケーション設定」の「テストオブジェクト」の「参照可能」にチェックをつけます。
「接続アプリケーション」->「testobject」にチェックをつけます。
「タブの設定」->「カスタムタブの設定」->「テストオブジェクト」->「デフォルトで表示」を選択します。
「システム管理者権限」->「API の有効化」にチェックをつけます。
「カスタムオブジェクト権限」->「テストオブジェクト」について、「基本アクセス」の「参照」「作成」「編集」「削除」チェックボックスにチェックをつける。
「保存」をクリックしてプロファイルを作成します。
プロファイル「テストオブジェクトプロファイル」が作成されます。
「設定」->「管理」->「ユーザの管理」->「権限セット」をクリックします。
カスタムオブジェクトを作成すると、自動的に権限セットが作成されます。
ここでは「テストオブジェクト 開発者」という権限セットが作成されている事を確認します。
「テストオブジェクト 開発者」をクリックします。
「権限セット - テストオブジェクト 開発者」画面が表示されます。
「システム権限」をクリックします。
「権限セット - テストオブジェクト 開発者」画面が表示されます。
「編集」をクリックします。
「API の有効化」にチェックをつけます。
「保存」をクリックします。
「設定」->「管理」->「ユーザの管理」->「ユーザ」をクリックします。
「すべてのユーザ」画面が表示されます。「新規ユーザ」をクリックします。
「新規ユーザ」画面が表示されます。
Salesforce REST API接続時に使用するSalesforce REST API接続用ユーザアカウントを作成します。
今回の例では、以下のユーザ名でSalesforceユーザを作成します。
ユーザ名 |
---|
example_salesforce_api_user@hoge.example.com |
「ライセンス」は「Salesforce」を選択します。
「プロファイル」は前述の手順で作成した「テストオブジェクトプロファイル」を選択します。
「保存 & 新規」をクリックします。
Salesforceユーザ「example_salesforce_api_user」が作成されます。
「設定」->「管理」->「ユーザの管理」->「ユーザ」->「example_salesforce_api_user」をクリックします。
「ユーザ - example_salesforce_api_user」画面が表示されます。
「権限セットの割り当て」をクリックします。
「権限セットの割り当て」で「割り当ての編集」をクリックします。
「利用可能な権限セット」の「テストオブジェクト 開発者」を追加して「保存」をクリックします。
「権限セットの割り当て」に「テストオブジェクト 開発者」が追加された事を確認します。
(8) プロファイルでForce.comアプリケーションへの通信を許可するIPアドレスを指定します。
前述の手順で作成したプロファイル「テストオブジェクトプロファイル」でもForce.comアプリケーションへの接続を許可するIPアドレスを指定します。
「設定」->「管理」->「ユーザの管理」->「プロファイル」の「テストオブジェクトプロファイル」をクリックします。
「テストオブジェクトプロファイル」画面が表示されるので「ログイン IP アドレスの制限」をクリックします。
「ログイン IP アドレスの制限」の「新規」をクリックします。
「ログイン IP アドレスの制限」画面が表示されます。
「開始IPアドレス」及び「終了IPアドレス」に「198.51.100.10」と入力して「保存」をクリックします。
「テストオブジェクトプロファイル」画面が表示されるので「ログイン IP アドレスの制限」にアクセス許可を追加したIPアドレスが表示されている事を確認します。
(9) AWSにEC2インスタンス(Amazon Linux)を作成し、PHP5.3をインストールします。
AWSにEC2インスタンス(Amazon Linux)を作成し、ec2-userでsshログインします。
PHP5.3やgit等をインストールします。
# sed -i -e "s/HOSTNAME=localhost.localdomain/HOSTNAME=salesforce-api-test/g" /etc/sysconfig/network
# yum -y update
# yum -y install git
# yum -y install php
タイムゾーンを設定します。
# cp /usr/share/zoneinfo/Japan /etc/localtime
# vi /etc/sysconfig/clock
ZONE="Asia/Tokyo"
UTC=true
#
インストールしたPHPバージョンを確認します。
# uname -a
Linux ip-172-31-3-217 4.4.11-23.53.amzn1.x86_64 #1 SMP Wed Jun 1 22:22:50 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
#
# php -v
PHP 5.3.29 (cli) (built: May 12 2015 22:42:19)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies
#
一度EC2インスタンスを再起動します。起動してきたら、再度EC2インスタンスにsshログインします。
# reboot
.bashrcにSalesforce REST API接続用の設定を追加します。
[ec2-user@salesforce-api-test ~]$ vi /home/ec2-user/.bashrc
(末尾に以下を追加する)
### Sandbox環境へ接続する場合のAPIエンドポイント
##export DATABASEDOTCOM_HOST="test.salesforce.com"
### 本番環境へ接続する場合のAPIエンドポイント
export DATABASEDOTCOM_HOST="login.salesforce.com"
export DATABASEDOTCOM_CLIENT_ID="前述の「コンシューマ鍵」(OAuthコンシューマキー)を記載します。"
export DATABASEDOTCOM_CLIENT_SECRET="前述の「コンシューマの秘密」(OAuthコンシューマシークレット)を記載します。"
export DATABASEDOTCOM_CLIENT_USERNAME="APIを有効化しているSalesforceユーザアカウント名を記載します。"
export DATABASEDOTCOM_CLIENT_AUTHENTICATE_PASSWORD="APIを有効化しているSalesforceユーザアカウントのパスワードを記載します。"
以下は.bashrcに設定を追加した後の例です。
[ec2-user@salesforce-api-test ~]$ cat /home/ec2-user/.bashrc
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific aliases and functions
### Sandbox環境へ接続する場合のAPIエンドポイント
##export DATABASEDOTCOM_HOST="test.salesforce.com"
### 本番環境へ接続する場合のAPIエンドポイント
export DATABASEDOTCOM_HOST="login.salesforce.com"
export DATABASEDOTCOM_CLIENT_ID="3**************************************************************F"
export DATABASEDOTCOM_CLIENT_SECRET="1********************4"
export DATABASEDOTCOM_CLIENT_USERNAME="example_salesforce_api_user@hoge.example.com"
export DATABASEDOTCOM_CLIENT_AUTHENTICATE_PASSWORD="*************"
[ec2-user@salesforce-api-test ~]$
.bashrcに設定した環境変数を読み込みます。
[ec2-user@salesforce-api-test ~]$ source /home/ec2-user/.bashrc
[ec2-user@salesforce-api-test ~]$
Force.com-OAuth-Toolkit-for-PHP.gitをcloneします。
[ec2-user@salesforce-api-test ~]$ git clone https://github.com/nkjm/Force.com-OAuth-Toolkit-for-PHP.git
[ec2-user@salesforce-api-test ~]$ ls -lrta /home/ec2-user/Force.com-OAuth-Toolkit-for-PHP/oauth.php
-rw-rw-r-- 1 ec2-user ec2-user 8472 Sep 6 02:28 /home/ec2-user/Force.com-OAuth-Toolkit-for-PHP/oauth.php
[ec2-user@salesforce-api-test ~]$
Force.com-OAuth-Toolkit-for-PHPのセッション格納ディレクトリを作成します。
[ec2-user@salesforce-api-test ~]$ mkdir -p /home/ec2-user/tmp/session
[ec2-user@salesforce-api-test ~]$
PHPのタイムゾーンを設定します。
[root@salesforce-api-test ~]# echo "date.timezone = \"Asia/Tokyo\"" >> /etc/php.ini
[root@salesforce-api-test ~]# grep date.timezone /etc/php.ini | grep -v "^;"
date.timezone = "Asia/Tokyo"
[root@salesforce-api-test ~]#
(10) EC2インスタンスにOpenSSL 1.0.1以上がインストールされている事を確認します。
Salesforce REST APIはTLS 1.0の段階的な無効化を開始しています。
https://help.salesforce.com/apex/HTViewSolution?id=000221207&language=ja
Salesforce REST APIを呼び出すインスタンスには、TLS 1.1をサポートしているOpenSSL 1.0.1以上がインストールされている必要があります。
Amazon LinuxのEC2インスタンスの場合、前述の手順でyum updateを実行すると、OpenSSL 1.0.1がインストールされます。念の為、OpenSSL 1.0.1がインストールされている事を確認します。
[ec2-user@salesforce-api-test ~]$ rpm -qa | grep openssl
openssl-1.0.1k-15.93.amzn1.x86_64
[ec2-user@salesforce-api-test ~]$
PHPからSalesforce REST APIでカスタムオブジェクトにレコードを追加する
(11) Force.comカスタムオブジェクトにレコードを追加するプログラムを作成します。
Force.comカスタムオブジェク「テストオブジェクト」(例としてオブジェクト名が QuickStart__c であるとします)にレコードを追加するPHPプログラムを作成します。
これを実行すると、カスタムオブジェクトにレコードを追加出来ます。
[ec2-user@salesforce-api-test ~]$ vi /home/ec2-user/insert_salesforce_api_test.php
<?php
date_default_timezone_set('Asia/Tokyo');
require_once("/home/ec2-user/Force.com-OAuth-Toolkit-for-PHP/oauth.php");
///// Salesforce REST API接続用の環境変数を.bashrcから取得する
// Salesforce REST APIで接続するアプリケーションの「コンシューマ鍵」
$DATABASEDOTCOM_CLIENT_ID = getenv('DATABASEDOTCOM_CLIENT_ID');
// Salesforce REST APIで接続するアプリケーションの「コンシューマの秘密」を.bashrcから取得する
$DATABASEDOTCOM_CLIENT_SECRET = getenv('DATABASEDOTCOM_CLIENT_SECRET');
// Salesforce REST API接続用のSalesforceユーザ(Salesforceログインに使用しているEメールアドレスを設定)を.bashrcから取得する
$DATABASEDOTCOM_CLIENT_USERNAME = getenv('DATABASEDOTCOM_CLIENT_USERNAME');
// Salesforce REST API接続用のSalesforceユーザのパスワードを.bashrcから取得する
$DATABASEDOTCOM_CLIENT_AUTHENTICATE_PASSWORD = getenv('DATABASEDOTCOM_CLIENT_AUTHENTICATE_PASSWORD');
// Salesforce REST APIエンドポイントを.bashrcから取得する
$DATABASEDOTCOM_HOST = getenv('DATABASEDOTCOM_HOST');
$LOGIN_URL = "https://" . $DATABASEDOTCOM_HOST . "/";
///// Salesforce REST API接続用の設定
$CACHE_DIR = '/home/ec2-user/tmp/session';
$CALLBACK_URL = 'https://198.51.100.10/';
/////
// Salesforce REST API接続用のOauthインスタンスを生成
$oauth = new oauth( $DATABASEDOTCOM_CLIENT_ID, $DATABASEDOTCOM_CLIENT_SECRET, $CALLBACK_URL, $LOGIN_URL, $CACHE_DIR);
// Salesforce REST API接続にあたりSalesforceへの認証を実行
$oauth->auth_with_password( $DATABASEDOTCOM_CLIENT_USERNAME, $DATABASEDOTCOM_CLIENT_AUTHENTICATE_PASSWORD );
var_dump( $oauth->instance_url );
// Salesforce REST APIでカスタムオブジェクトへ追加するレコード
$today = date("Y-m-d");
$insert_time = date("Ymd_His");
$insert_name = "testname_" . $insert_time;
$insert_email = $insert_name . "@hoge.example.com";
$insert_record = array(
'user_name__c' => $insert_name,
'user_email__c' => $insert_email,
'create_date__c' => $today
);
$insert_record_json = json_encode($insert_record);
$insert_record_json = preg_replace('/\\\\\//', '/', $insert_record_json);
echo $insert_record_json . "\n";
$url = $oauth->instance_url . "/services/data/v20.0/sobjects/QuickStart__c";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $insert_record_json);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json;charset=UTF-8', "Authorization: OAuth " . $oauth->access_token));
$response = json_decode(curl_exec($curl), true);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
var_dump($url);
// insert成功時は201が返ってくるので、201以外はエラーと判定
if ( $status != 201 ) {
print("Salesforce REST API Access Failed StatusCode =[" . $status . "]\n");
} else {
print("Salesforce REST API Access Success StatusCode =[" . $status . "]\n");
}
var_dump( $response );
curl_close($curl);
$oauth->auth_with_refresh_token();
?>
PHPプログラムを実行すると、Force.comカスタムオブジェクトにレコードを追加出来ます。
[ec2-user@salesforce-api-test ~]$ pwd
/home/ec2-user
[ec2-user@salesforce-api-test ~]$ php /home/ec2-user/insert_salesforce_api_test.php
string(26) "https://ap2.salesforce.com"
{"user_name__c":"testname_20160907_014059","user_email__c":"testname_20160907_014059@hoge.example.com","create_date__c":"2016-09-07"}
string(69) "https://ap2.salesforce.com/services/data/v20.0/sobjects/QuickStart__c"
SalesForce REST API Access Success StatusCode =[201]
array(3) {
["id"]=>
string(18) "a032800000G8dC0AAJ"
["success"]=>
bool(true)
["errors"]=>
array(0) {
}
}
[ec2-user@salesforce-api-test ~]$
PHPからSalesforce REST APIでカスタムオブジェクトに追加したレコード一覧を表示する
(12) Force.comカスタムオブジェクトに追加したレコードを表示するプログラムを作成します。
Force.comカスタムオブジェク「テストオブジェクト」(例としてオブジェクト名が QuickStart__c であるとします)のレコードを表示するPHPプログラムを作成します。
これを実行すると、カスタムオブジェクトに追加されたレコードを表示出来ます。
[ec2-user@salesforce-api-test ~]$ vi /home/ec2-user/select_salesforce_api_test.php
<?php
require_once("/home/ec2-user/Force.com-OAuth-Toolkit-for-PHP/oauth.php");
///// Salesforce REST API接続用の環境変数を.bashrcから取得する
// Salesforce REST APIで接続するアプリケーションの「コンシューマ鍵」
$DATABASEDOTCOM_CLIENT_ID = getenv('DATABASEDOTCOM_CLIENT_ID');
// Salesforce REST APIで接続するアプリケーションの「コンシューマの秘密」を.bashrcから取得する
$DATABASEDOTCOM_CLIENT_SECRET = getenv('DATABASEDOTCOM_CLIENT_SECRET');
// Salesforce REST API接続用のSalesforceユーザ(Salesforceログインに使用しているEメールアドレスを設定)を.bashrcから取得する
$DATABASEDOTCOM_CLIENT_USERNAME = getenv('DATABASEDOTCOM_CLIENT_USERNAME');
// Salesforce REST API接続用のSalesforceユーザのパスワードを.bashrcから取得する
$DATABASEDOTCOM_CLIENT_AUTHENTICATE_PASSWORD = getenv('DATABASEDOTCOM_CLIENT_AUTHENTICATE_PASSWORD');
// Salesforce REST APIエンドポイントを.bashrcから取得する
$DATABASEDOTCOM_HOST = getenv('DATABASEDOTCOM_HOST');
$LOGIN_URL = "https://" . $DATABASEDOTCOM_HOST . "/";
///// Salesforce REST API接続用の設定
$CACHE_DIR = '/home/ec2-user/tmp/session';
$CALLBACK_URL = 'https://198.51.100.10/';
/////
// Salesforce REST API接続用のOauthインスタンスを生成
$oauth = new oauth( $DATABASEDOTCOM_CLIENT_ID, $DATABASEDOTCOM_CLIENT_SECRET, $CALLBACK_URL, $LOGIN_URL, $CACHE_DIR);
// Salesforce REST API接続にあたりSalesforceへの認証を実行
$oauth->auth_with_password( $DATABASEDOTCOM_CLIENT_USERNAME, $DATABASEDOTCOM_CLIENT_AUTHENTICATE_PASSWORD );
//var_dump( $oauth->instance_url );
//var_dump( $oauth->access_token );
//var_dump( $oauth->refresh_token );
// Salesforce REST APIパラメータに指定するSOQLを定義
$query = "SELECT user_name__c, user_email__c, create_date__c FROM QuickStart__c";
// Salesforce REST APIを実行する
$url = $oauth->instance_url . "/services/data/v24.0/query?q=" . urlencode($query);
$curl = curl_init($url);
var_dump($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Authorization: OAuth " . $oauth->access_token));
// Salesforce REST API実行結果を保存
$response = json_decode(curl_exec($curl), true);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ( $status != 200 ) {
print("Salesforce REST API Access Failed StatusCode =[" . $status . "]\n");
} else {
print("Salesforce REST API Access Success StatusCode =[" . $status . "]\n");
}
var_dump( $response );
curl_close($curl);
$oauth->auth_with_refresh_token();
?>
このプログラムを実行すると、Force.comカスタムオブジェクトのレコード一覧を表示出来ます。
[ec2-user@salesforce-api-test ~]$ php /home/ec2-user/select_salesforce_api_test.php
string(128) "https://ap2.salesforce.com/services/data/v24.0/query?q=SELECT+user_name__c%2C+user_email__c%2C+create_date__c+FROM+QuickStart__c"
SalesForce REST API Access Success StatusCode =[200]
array(3) {
["totalSize"]=>
int(15)
["done"]=>
bool(true)
["records"]=>
array(15) {
[0]=>
array(4) {
["attributes"]=>
array(2) {
["type"]=>
string(13) "QuickStart__c"
["url"]=>
string(62) "/services/data/v24.0/sobjects/QuickStart__c/a032800000FlloBAAR"
}
["user_name__c"]=>
string(15) "テスト太郎"
["user_email__c"]=>
string(22) "test.tarou@example.com"
["create_date__c"]=>
NULL
}
[1]=>
array(4) {
["attributes"]=>
array(2) {
["type"]=>
string(13) "QuickStart__c"
["url"]=>
string(62) "/services/data/v24.0/sobjects/QuickStart__c/a032800000FlloVAAR"
}
["user_name__c"]=>
string(15) "テスト次郎"
["user_email__c"]=>
string(22) "test.jirou@example.com"
["create_date__c"]=>
NULL
}
[2]=>
array(4) {
["attributes"]=>
array(2) {
["type"]=>
string(13) "QuickStart__c"
["url"]=>
string(62) "/services/data/v24.0/sobjects/QuickStart__c/a032800000G8d8SAAR"
}
["user_name__c"]=>
string(24) "testname_20160907_013814"
["user_email__c"]=>
string(41) "testname_20160907_013814@hoge.example.com"
["create_date__c"]=>
string(10) "2016-09-07"
}
[3]=>
array(4) {
["attributes"]=>
array(2) {
["type"]=>
string(13) "QuickStart__c"
["url"]=>
string(62) "/services/data/v24.0/sobjects/QuickStart__c/a032800000G8d7yAAB"
}
["user_name__c"]=>
string(24) "testname_20160907_013750"
["user_email__c"]=>
string(41) "testname_20160907_013750@hoge.example.com"
["create_date__c"]=>
string(10) "2016-09-07"
}
[4]=>
array(4) {
["attributes"]=>
array(2) {
["type"]=>
string(13) "QuickStart__c"
["url"]=>
string(62) "/services/data/v24.0/sobjects/QuickStart__c/a032800000G8d9pAAB"
}
["user_name__c"]=>
string(24) "testname_20160907_013850"
["user_email__c"]=>
string(41) "testname_20160907_013850@hoge.example.com"
["create_date__c"]=>
string(10) "2016-09-07"
}
[5]=>
array(4) {
["attributes"]=>
array(2) {
["type"]=>
string(13) "QuickStart__c"
["url"]=>
string(62) "/services/data/v24.0/sobjects/QuickStart__c/a032800000G8d0EAAR"
}
["user_name__c"]=>
string(24) "testname_20160907_013037"
["user_email__c"]=>
string(41) "testname_20160907_013037@hoge.example.com"
["create_date__c"]=>
string(10) "2016-09-07"
}
[6]=>
array(4) {
["attributes"]=>
array(2) {
["type"]=>
string(13) "QuickStart__c"
["url"]=>
string(62) "/services/data/v24.0/sobjects/QuickStart__c/a032800000G8dAiAAJ"
}
["user_name__c"]=>
string(24) "testname_20160907_013909"
["user_email__c"]=>
string(41) "testname_20160907_013909@hoge.example.com"
["create_date__c"]=>
string(10) "2016-09-07"
}
[7]=>
array(4) {
["attributes"]=>
array(2) {
["type"]=>
string(13) "QuickStart__c"
["url"]=>
string(62) "/services/data/v24.0/sobjects/QuickStart__c/a032800000G8dC0AAJ"
}
["user_name__c"]=>
string(24) "testname_20160907_014059"
["user_email__c"]=>
string(41) "testname_20160907_014059@hoge.example.com"
["create_date__c"]=>
string(10) "2016-09-07"
}
[8]=>
array(4) {
["attributes"]=>
array(2) {
["type"]=>
string(13) "QuickStart__c"
["url"]=>
string(62) "/services/data/v24.0/sobjects/QuickStart__c/a032800000G8dCFAAZ"
}
["user_name__c"]=>
string(24) "testname_20160907_014210"
["user_email__c"]=>
string(41) "testname_20160907_014210@hoge.example.com"
["create_date__c"]=>
string(10) "2016-09-07"
}
[9]=>
array(4) {
["attributes"]=>
array(2) {
["type"]=>
string(13) "QuickStart__c"
["url"]=>
string(62) "/services/data/v24.0/sobjects/QuickStart__c/a032800000G7wcGAAR"
}
["user_name__c"]=>
string(24) "testname_20160906_042408"
["user_email__c"]=>
string(41) "testname_20160906_042408@hoge.example.com"
["create_date__c"]=>
string(10) "2016-09-06"
}
[10]=>
array(4) {
["attributes"]=>
array(2) {
["type"]=>
string(13) "QuickStart__c"
["url"]=>
string(62) "/services/data/v24.0/sobjects/QuickStart__c/a032800000G7wcQAAR"
}
["user_name__c"]=>
string(24) "testname_20160906_042527"
["user_email__c"]=>
string(41) "testname_20160906_042527@hoge.example.com"
["create_date__c"]=>
string(10) "2016-09-06"
}
[11]=>
array(4) {
["attributes"]=>
array(2) {
["type"]=>
string(13) "QuickStart__c"
["url"]=>
string(62) "/services/data/v24.0/sobjects/QuickStart__c/a032800000G7wcuAAB"
}
["user_name__c"]=>
string(24) "testname_20160906_043918"
["user_email__c"]=>
string(41) "testname_20160906_043918@hoge.example.com"
["create_date__c"]=>
string(10) "2016-09-06"
}
[12]=>
array(4) {
["attributes"]=>
array(2) {
["type"]=>
string(13) "QuickStart__c"
["url"]=>
string(62) "/services/data/v24.0/sobjects/QuickStart__c/a032800000G7wcBAAR"
}
["user_name__c"]=>
string(24) "testname_20160906_042126"
["user_email__c"]=>
string(41) "testname_20160906_042126@hoge.example.com"
["create_date__c"]=>
string(10) "2016-09-06"
}
[13]=>
array(4) {
["attributes"]=>
array(2) {
["type"]=>
string(13) "QuickStart__c"
["url"]=>
string(62) "/services/data/v24.0/sobjects/QuickStart__c/a032800000G7wdEAAR"
}
["user_name__c"]=>
string(24) "testname_20160906_044112"
["user_email__c"]=>
string(41) "testname_20160906_044112@hoge.example.com"
["create_date__c"]=>
string(10) "2016-09-06"
}
[14]=>
array(4) {
["attributes"]=>
array(2) {
["type"]=>
string(13) "QuickStart__c"
["url"]=>
string(62) "/services/data/v24.0/sobjects/QuickStart__c/a032800000G7wcLAAR"
}
["user_name__c"]=>
string(24) "testname_20160906_042515"
["user_email__c"]=>
string(41) "testname_20160906_042515@hoge.example.com"
["create_date__c"]=>
string(10) "2016-09-06"
}
}
}
[ec2-user@salesforce-api-test ~]$
備考
以下のコマンドを実行すると、PHPクライアントからSalesforce REST APIへのネットワーク層での通信が正常な場合、SalesforceからAPIアクセストークンを取得出来ます。
Salesforceへの手軽な疎通確認に利用出来ます。
[ec2-user@salesforce-api-test ~]$ curl https://$DATABASEDOTCOM_HOST/services/oauth2/token -d "grant_type=password" -d "client_id=$DATABASEDOTCOM_CLIENT_ID" -d "client_secret=$DATABASEDOTCOM_CLIENT_SECRET" -d "username=$DATABASEDOTCOM_CLIENT_USERNAME" -d "password=$DATABASEDOTCOM_CLIENT_AUTHENTICATE_PASSWORD"
{"access_token":"00D******************************************wzij","instance_url":"https://ap2.salesforce.com","id":"https://login.salesforce.com/id/********************:/*******************","token_type":"Bearer","issued_at":"1473101261652","signature":"J28rR************************:"}[ec2-user@salesforce-api-test ~]$
[ec2-user@salesforce-api-test ~]$
以上になります。