---
schema_version: "1"
id: 01c6cc43d068bef81091d5703040f37e0e6404daeaa1ae4f56c6e745c0ecfb2b
title: AuthRequestHandler Interface
collection: legacydeveloper
version: current
locale: en-us
portal_url: https://docs.salesforce.com/legacydeveloper/current/en-us/apexref/apex_interface_RichMessaging_AuthRequestHandler.md
canonical_url: https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_interface_RichMessaging_AuthRequestHandler.htm
source_site: developer.salesforce.com
content_type: documentation
content_hash: 9f09365d4b2158843c38c189ee7a056cf43950294ded21f5fb0694736ed7f65e
description: Use this interface to handle authorization request responses.Handles authorization request response.
---
# AuthRequestHandler Interface

Use this interface to handle authorization request responses.

## Namespace

[RichMessaging](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_namespace_RichMessaging.htm "Provides objects and methods for handling content in enhanced Messaging channels.")

## Usage

When using this interface, the following limits are overridden. See [Execution Governors and Limits](https://developer.salesforce.com/docs/atlas.en-us.264.0.apexcode.meta/apexcode/apex_gov_limits.htm) in the Apex Developer Guide.

Table 1. Overridden Limits
| Limit Name | Overridden Value |
| --- | --- |
| Total number of SOQL queries issued | 2 |
| Total number of records retrieved by a single SOSL query | 2 |
| Total number of DML statements issued | 1 |
| Total number of records processed as a result of DML statements | 1 |
| Total number of callouts (HTTP requests or web services calls) in a transaction | 2 |

- **[AuthRequestHandler Methods](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_interface_RichMessaging_AuthRequestHandler.htm#apex_RichMessaging_AuthRequestHandler_methods)**
- **[AuthRequestHandler Example Implementation](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_interface_RichMessaging_AuthRequestHandler.htm#apex_interface_RichMessaging_AuthRequestHandler_Example)**

## AuthRequestHandler Methods

The following are methods for AuthRequestHandler.

- **[handleAuthRequest(var1)](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_interface_RichMessaging_AuthRequestHandler.htm#apex_RichMessaging_AuthRequestHandler_handleAuthRequest)**  
    Handles authorization request response.

### handleAuthRequest(var1)

Handles authorization request response.

#### Signature

public RichMessaging.AuthRequestResult handleAuthRequest(RichMessaging.AuthRequestResponse var1)

#### Parameters

- **var1**: Type: [RichMessaging.AuthRequestResponse](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_class_RichMessaging_AuthRequestResponse.htm#apex_class_RichMessaging_AuthRequestResponse "This class contains authorization request response data.") The authorization response.

#### Return Value

Type: [RichMessaging.AuthRequestResult](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_class_RichMessaging_AuthRequestResult.htm#apex_class_RichMessaging_AuthRequestResult "This class contains the result from handling the authorization request response.")

## AuthRequestHandler Example Implementation

This is an example implementation of the RichMessaging.AuthRequestHandler interface.

global class SampleAuthRequestHandler implements RichMessaging.AuthRequestHandler {

    global RichMessaging.AuthRequestResult handleAuthRequest(RichMessaging.AuthRequestResponse authReqResponse) {

        // Get contact email from messaging session
        String sessionId = authReqResponse.getContextRecordId();
        String contactEmail = \[select MessagingSession.EndUserContact.Email from MessagingSession where id = :sessionId\].EndUserContact.Email;

        RichMessaging.AuthRequestResultStatus authRequestStatus = RichMessaging.AuthRequestResultStatus.DECLINED;
        DateTime dt = DateTime.now();
        
        // Get user info if there's a valid contact email
        if (!String.isBlank(contactEmail)) {
            String userInfoUrl = 'https://api.MY\_AUTH\_DOMAIN.com/v1/';

            HttpRequest req = new HttpRequest(); 

            req.setEndpoint(userInfoUrl); 
            req.setHeader('Content-Type','application/json'); 
            req.setMethod('GET'); 
            req.setHeader('Authorization', 'Bearer '+authReqResponse.getAccessToken());
            Http http = new Http(); 
            HTTPResponse res = http.send(req); 

            String responseBody = res.getBody();

            UserWrapper userInfo = (UserWrapper)System.JSON.deserialize(responseBody, UserWrapper.class);

            if (userInfo.email == contactEmail) {
                authRequestStatus = RichMessaging.AuthRequestResultStatus.AUTHENTICATED;
                dt = dt.addHours(6);
            }
         }
 
        return new RichMessaging.AuthRequestResult(
            null,
            authRequestStatus,
            dt);
    }
 
    public class UserWrapper{  
        public String href;  
        public String display\_name; 
        public String type;  
        public String country; 
        public String product;
        public String email;  
    }
}