SalesforceのREST API接続用のLaravelパッケージを使ってみる

Salesforce接続用のLaravel5パッケージ、omniphx/forrestを使ってみた。

セットアップ

Composerに追加。

1
$ composer require "omniphx/forrest":"2.*"

config/app.phpに以下を追加

1
2
3
4
5
6
7
8
9
10
11
12
13
'providers' => [
  // ...
  Omniphx\Forrest\Providers\Laravel\ForrestServiceProvider::class,
  // ...
],

...

'aliases' => [
  // ...
    'Forrest' => Omniphx\Forrest\Providers\Laravel\Facades\Forrest::class
  // ...
],

以下で設定ファイルを生成させる。

1
$ php artisan vendor:publish

設定ファイル

SFへの接続方法は2つから選択可能。

  • Web Server authentication flow – 個別のSFアカウントでのログイン
  • Username-Password authentication flow – 接続用のアカウントを使用したログイン

通常は、Username-Password authentication を利用する事が多い。

config/forrest.phpで以下を書き換え。

1
2
3
4
//11行目
'authentication' => 'WebServer',
↓↓
'authentication' => 'UserPassword',

あとは、.envファイルでユーザ名やパスワード、アプリのキーなどを設定する。

1
2
3
4
5
CONSUMER_KEY=xxx
CONSUMER_SECRET=xxx
LOGIN_URL=https://login.salesforce.com/
USERNAME=xxx
PASSWORD=xxx

LOGIN_URLhttps://test.salesforce.com/としておくと常にsandboxへの接続となる。

利用

ログイン

以下でログイン。

1
2
3
use Omniphx\Forrest\Providers\Laravel\Facades\Forrest;
...
Forrest::authenticate();

(PHPStormの補完が効かない…)

クエリの発行

1
Forrest::query('SELECT Id FROM Account');

レコードの作成など

1
2
3
4
$body = ['Name' => 'New Account'];
Forrest::sobjects('Account',[
    'method' => 'post',
    'body'   => $body]);

sobjectsで第一引数にオブジェクトを指定し、第二引数に送信する内容を指定する。
送信内容は配列でキーを指定してやればよい。
methodはそれぞれ以下。

  • post – 作成
  • put – 更新
  • patch – アップサート
  • delete – 削除

削除の場合は以下のようにREST形式でSFIDを指定してやる。

1
Forrest::sobjects('Account/001i000000xxx', ['method' => 'delete']);

トークンの操作

  • リフレッシュ – refresh()
  • 廃止 – revoke()

カスタムエンドポイント

以下の様のして送信する。

1
2
3
4
Forrest::custom('/myEndpoint', [
    'method' => 'post',
    'body' => ['foo' => 'bar'],
    'parameters' => ['flim' => 'flam']]);

その他は、GitHubのReadme参照。

参考

   このエントリーをはてなブックマークに追加