(省略可能) ステップ 5: OAuth べアラートークンログインを使用してコネクタを使用する
ユーザ名とパスワードでの認証の代わりに、OAuth 認証を使用したコネクタを使用できます。このステップは省略可能で、OAuth トークンが必要です。
前提条件
Salesforce ユーザの OAuth ベアラーアクセストークンを入手します。このアクセストークンをコネクタの例で使用します。「OAuth 2.0 での認証の設定」を参照してください。Salesforce ヘルプの「OAuth によるアプリケーションの認証」も参照してください。
-
/src/main/java/com/salesforce/emp/connector/example フォルダで、BearerTokenExample.java Java ソースファイルを開きます。
1/* 2 * Copyright (c) 2016, salesforce.com, inc. All rights reserved. Licensed under the BSD 3-Clause license. For full 3 * license text, see LICENSE.TXT file in the repo root or https://opensource.org/licenses/BSD-3-Clause 4 */ 5package com.salesforce.emp.connector.example; 6 7import java.net.MalformedURLException; 8import java.net.URL; 9import java.util.Map; 10import java.util.concurrent.TimeUnit; 11import java.util.function.Consumer; 12 13import com.salesforce.emp.connector.BayeuxParameters; 14import com.salesforce.emp.connector.EmpConnector; 15import com.salesforce.emp.connector.TopicSubscription; 16import org.cometd.bayeux.Channel; 17 18/** 19 * An example of using the EMP connector using bearer tokens 20 */ 21public class BearerTokenExample { 22 public static void main(String[] argv) throws Exception { 23 if (argv.length < 2 || argv.length > 4) { 24 System.err.println("Usage: BearerTokenExample url token channel [replayFrom]"); 25 System.exit(1); 26 } 27 long replayFrom = EmpConnector.REPLAY_FROM_EARLIEST; 28 if (argv.length == 4) { 29 replayFrom = Long.parseLong(argv[3]); 30 } 31 32 BayeuxParameters params = new BayeuxParameters() { 33 34 @Override 35 public String bearerToken() { 36 return argv[1]; 37 } 38 39 @Override 40 public URL host() { 41 try { 42 return new URL(argv[0]); 43 } catch (MalformedURLException e) { 44 throw new IllegalArgumentException(String.format( 45 "Unable to create url: %s", argv[0]), e); 46 } 47 } 48 }; 49 50 Consumer<Map<String, Object>> consumer = event -> System.out.println( 51 String.format("Received:\n%s", event)); 52 EmpConnector connector = new EmpConnector(params); 53 54 connector.addListener(Channel.META_CONNECT, new LoggingListener(true, true)) 55 .addListener(Channel.META_DISCONNECT, new LoggingListener(true, true)) 56 .addListener(Channel.META_HANDSHAKE, new LoggingListener(true, true)); 57 58 connector.start().get(5, TimeUnit.SECONDS); 59 60 TopicSubscription subscription = connector.subscribe( 61 argv[2], replayFrom, consumer).get(5, TimeUnit.SECONDS); 62 63 System.out.println(String.format("Subscribed: %s", subscription)); 64 } 65} -
BearerTokenExample クラスを実行し、次の引数の値を指定します。
引数 値 url ログインユーザの Salesforce インスタンスの URL token OAuth 認証フローによって返されたアクセストークン channel PushTopic のチャネル名: /topic/InvoiceStatementUpdates。 このサンプルでは、過去 24 時間以内で最も早く保存されたイベントを取得します。必要に応じて、異なるイベントを受信するために、最後の引数として再生 ID を含めることができます。有効な値は、次のとおりです。- –1 — 登録後に送信されたすべての新規イベントを取得します。
- –2 — 登録後に送信されたすべての新規イベントおよび過去 24 時間以内のすべての過去のイベントを取得します。
- 特定の番号 — 指定された再生 ID を持つイベントより後に発生したすべてのイベントを取得します。
-
ブラウザウィンドウで、請求書明細を作成または変更します。PushTopic 内のクエリに対応するデータを作成または変更すると、出力は次のようになります。
1Subscribed: Subscription [/topic/InvoiceStatementUpdates:-2] 2Received: 3{event={createdDate=2016-12-12T22:31:48.035Z, replayId=1, type=created}, sobject={Status__c=Open, Id=a070P00000pn0hyQAA, Name=INV-0001, Description__c=blah}} 4Received: 5{event={createdDate=2016-12-12T22:32:06.440Z, replayId=2, type=updated}, sobject={Status__c=Negotiating, Id=a070P00000pn0hyQAA, Name=INV-0001, Description__c=blah}} 6Received: 7{event={createdDate=2016-12-12T22:32:57.404Z, replayId=3, type=created}, sobject={Status__c=Open, Id=a070P00000pn0lfQAA, Name=INV-0002, Description__c=Laptops and accessories.}}