この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Newer Version Available

This content describes an older version of this product. View Latest

AuthRequestHandler インターフェース

このインターフェースは、承認要求の応答を処理する場合に使用します。

名前空間

RichMessaging

使用方法

このインターフェースを使用すると、次の制限が上書きされます。『Apex 開発者ガイド』の「実行ガバナと制限」を参照してください。

表 1. 上書きされる制限
制限名 上書きされる値
発行される 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}