Newer Version Available
AuthRequestHandler インターフェース
このインターフェースは、承認要求の応答を処理する場合に使用します。
名前空間
使用方法
このインターフェースを使用すると、次の制限が上書きされます。『Apex 開発者ガイド』の「実行ガバナと制限」を参照してください。
| 制限名 | 上書きされる値 |
|---|---|
| 発行される SOQL クエリの合計数 | 2 |
| 1 つの SOSL クエリによって取得されるレコードの合計数 | 2 |
| 発行される DML ステートメントの合計数 | 1 |
| DML ステートメントの結果として処理されるレコードの合計数 | 1 |
| トランザクション内のコールアウト (HTTP 要求または Web サービスコール) の合計数 | 2 |
AuthRequestHandler のメソッド
AuthRequestHandler のメソッドは次のとおりです。
handleAuthRequest(var1)
承認要求の応答を処理します。
署名
public RichMessaging.AuthRequestResult handleAuthRequest(RichMessaging.AuthRequestResponse var1)
パラメーター
- var1
- 型: RichMessaging.AuthRequestResponse
- 承認応答。
AuthRequestHandler の実装例
これは、RichMessaging.AuthRequestHandler インターフェースの実装例です。
1global class SampleAuthRequestHandler implements RichMessaging.AuthRequestHandler {
2
3 global RichMessaging.AuthRequestResult handleAuthRequest(RichMessaging.AuthRequestResponse authReqResponse) {
4
5 // Get contact email from messaging session
6 String sessionId = authReqResponse.getContextRecordId();
7 String contactEmail = [select MessagingSession.EndUserContact.Email from MessagingSession where id = :sessionId].EndUserContact.Email;
8
9 RichMessaging.AuthRequestResultStatus authRequestStatus = RichMessaging.AuthRequestResultStatus.DECLINED;
10 DateTime dt = DateTime.now();
11
12 // Get user info if there's a valid contact email
13 if (!String.isBlank(contactEmail)) {
14 String userInfoUrl = 'https://api.MY_AUTH_DOMAIN.com/v1/';
15
16 HttpRequest req = new HttpRequest();
17
18 req.setEndpoint(userInfoUrl);
19 req.setHeader('Content-Type','application/json');
20 req.setMethod('GET');
21 req.setHeader('Authorization', 'Bearer '+authReqResponse.getAccessToken());
22 Http http = new Http();
23 HTTPResponse res = http.send(req);
24
25 String responseBody = res.getBody();
26
27 UserWrapper userInfo = (UserWrapper)System.JSON.deserialize(responseBody, UserWrapper.class);
28
29 if (userInfo.email == contactEmail) {
30 authRequestStatus = RichMessaging.AuthRequestResultStatus.AUTHENTICATED;
31 dt = dt.addHours(6);
32 }
33 }
34
35 return new RichMessaging.AuthRequestResult(
36 null,
37 authRequestStatus,
38 dt);
39 }
40
41 public class UserWrapper{
42 public String href;
43 public String display_name;
44 public String type;
45 public String country;
46 public String product;
47 public String email;
48 }
49}