Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Protected Member Functions | Protected Attributes
OauthService Class Reference
Inheritance diagram for OauthService:
OauthServiceInterface

Public Member Functions

 __construct (\Magento\Store\Model\StoreManagerInterface $storeManager, ConsumerFactory $consumerFactory, TokenFactory $tokenFactory, IntegrationOauthHelper $dataHelper, \Magento\Framework\HTTP\ZendClient $httpClient, \Psr\Log\LoggerInterface $logger, OauthHelper $oauthHelper, TokenProvider $tokenProvider)
 
 createConsumer ($consumerData)
 
 createAccessToken ($consumerId, $clearExistingToken=false)
 
 getAccessToken ($consumerId)
 
 loadConsumer ($consumerId)
 
 loadConsumerByKey ($key)
 
 postToConsumer ($consumerId, $endpointUrl)
 
 deleteConsumer ($consumerId)
 
 deleteIntegrationToken ($consumerId)
 

Protected Member Functions

 _loadConsumerById ($consumerId)
 

Protected Attributes

 $_storeManager
 
 $_consumerFactory
 
 $_tokenFactory
 
 $_dataHelper
 
 $_httpClient
 
 $_logger
 
 $_oauthHelper
 
 $_tokenProvider
 

Detailed Description

Integration oAuth service.

@SuppressWarnings(PHPMD.CouplingBetweenObjects)

Definition at line 23 of file OauthService.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( \Magento\Store\Model\StoreManagerInterface  $storeManager,
ConsumerFactory  $consumerFactory,
TokenFactory  $tokenFactory,
IntegrationOauthHelper  $dataHelper,
\Magento\Framework\HTTP\ZendClient  $httpClient,
\Psr\Log\LoggerInterface  $logger,
OauthHelper  $oauthHelper,
TokenProvider  $tokenProvider 
)

Initialize dependencies.

Parameters
\Magento\Store\Model\StoreManagerInterface$storeManager
ConsumerFactory$consumerFactory
TokenFactory$tokenFactory
IntegrationOauthHelper$dataHelper
\Magento\Framework\HTTP\ZendClient$httpClient
\Psr\Log\LoggerInterface$logger
OauthHelper$oauthHelper
TokenProvider$tokenProvider

Definition at line 82 of file OauthService.php.

91  {
92  $this->_storeManager = $storeManager;
93  $this->_consumerFactory = $consumerFactory;
94  $this->_tokenFactory = $tokenFactory;
95  $this->_dataHelper = $dataHelper;
96  $this->_httpClient = $httpClient;
97  $this->_logger = $logger;
98  $this->_oauthHelper = $oauthHelper;
99  $this->_tokenProvider = $tokenProvider;
100  }
$storeManager
$logger

Member Function Documentation

◆ _loadConsumerById()

_loadConsumerById (   $consumerId)
protected

Load consumer by id.

Parameters
int$consumerId
Returns
ConsumerModel
Exceptions

Definition at line 289 of file OauthService.php.

290  {
291  $consumer = $this->_consumerFactory->create()->load($consumerId);
292  if (!$consumer->getId()) {
293  throw new IntegrationException(
294  __('A consumer with ID "%1" doesn\'t exist. Verify the ID and try again.', $consumerId)
295  );
296  }
297  return $consumer;
298  }
__()
Definition: __.php:13

◆ createAccessToken()

createAccessToken (   $consumerId,
  $clearExistingToken = false 
)

{Create access token for provided consumer.

Parameters
int$consumerId
bool$clearExistingToken
Returns
bool If token was created
}

Implements OauthServiceInterface.

Definition at line 143 of file OauthService.php.

144  {
145  try {
146  $consumer = $this->_consumerFactory->create()->load($consumerId);
147  $existingToken = $this->_tokenProvider->getIntegrationTokenByConsumerId($consumer->getId());
148  if ($existingToken && $clearExistingToken) {
149  $existingToken->delete();
150  unset($existingToken);
151  }
152  } catch (\Exception $e) {
153  }
154  if (!isset($existingToken)) {
155  $consumer = $this->_consumerFactory->create()->load($consumerId);
156  $this->_tokenFactory->create()->createVerifierToken($consumerId);
157  $this->_tokenProvider->createRequestToken($consumer);
158  $this->_tokenProvider->getAccessToken($consumer);
159  return true;
160  }
161  return false;
162  }

◆ createConsumer()

createConsumer (   $consumerData)

{Create a new consumer account.

Parameters
array$consumerData- Information provided by an integration when the integration is installed.
array(
    'name' => 'Integration Name',
    '...' => '...', // Other consumer data can be passed as well
)
Returns
\Magento\Integration\Model\Oauth\Consumer
Exceptions
}

Implements OauthServiceInterface.

Definition at line 121 of file OauthService.php.

122  {
123  try {
124  $consumerData['key'] = $this->_oauthHelper->generateConsumerKey();
125  $consumerData['secret'] = $this->_oauthHelper->generateConsumerSecret();
126  $consumer = $this->_consumerFactory->create()->setData($consumerData);
127  $consumer->save();
128  return $consumer;
129  } catch (\Magento\Framework\Exception\LocalizedException $exception) {
130  throw $exception;
131  } catch (\Exception $exception) {
132  throw new \Magento\Framework\Oauth\Exception(
133  __(
134  "The oAuth consumer account couldn't be created due to an unexpected error. Please try again later."
135  )
136  );
137  }
138  }
__()
Definition: __.php:13

◆ deleteConsumer()

deleteConsumer (   $consumerId)

{Delete the consumer data associated with the integration including its token and nonce

Parameters
int$consumerId
Returns
array Consumer data array
}

Implements OauthServiceInterface.

Definition at line 259 of file OauthService.php.

260  {
261  $consumer = $this->_loadConsumerById($consumerId);
262  $data = $consumer->getData();
263  $consumer->delete();
264  return $data;
265  }

◆ deleteIntegrationToken()

deleteIntegrationToken (   $consumerId)

{Remove token associated with provided consumer.

Parameters
int$consumerId
Returns
bool If token was deleted
}

Implements OauthServiceInterface.

Definition at line 270 of file OauthService.php.

271  {
272  try {
273  $consumer = $this->_consumerFactory->create()->load($consumerId);
274  $existingToken = $this->_tokenProvider->getIntegrationTokenByConsumerId($consumer->getId());
275  $existingToken->delete();
276  return true;
277  } catch (\Exception $e) {
278  return false;
279  }
280  }

◆ getAccessToken()

getAccessToken (   $consumerId)

{Retrieve access token assigned to the consumer.

Parameters
int$consumerId
Returns
OauthTokenModel|bool Return false if no access token is available.
}

Implements OauthServiceInterface.

Definition at line 167 of file OauthService.php.

168  {
169  try {
170  $consumer = $this->_consumerFactory->create()->load($consumerId);
171  $token = $this->_tokenProvider->getIntegrationTokenByConsumerId($consumer->getId());
172  if ($token->getType() != OauthTokenModel::TYPE_ACCESS) {
173  return false;
174  }
175  } catch (\Exception $e) {
176  return false;
177  }
178  return $token;
179  }

◆ loadConsumer()

loadConsumer (   $consumerId)

{Load consumer by its ID.

Parameters
int$consumerId
Returns
\Magento\Integration\Model\Oauth\Consumer
Exceptions
}

Implements OauthServiceInterface.

Definition at line 184 of file OauthService.php.

185  {
186  try {
187  return $this->_consumerFactory->create()->load($consumerId);
188  } catch (\Magento\Framework\Exception\LocalizedException $exception) {
189  throw $exception;
190  } catch (\Exception $exception) {
191  throw new \Magento\Framework\Oauth\Exception(
192  __("The oAuth consumer account couldn't be loaded due to an unexpected error. Please try again later.")
193  );
194  }
195  }
__()
Definition: __.php:13

◆ loadConsumerByKey()

loadConsumerByKey (   $key)

{Load consumer by its key.

Parameters
string$key
Returns
\Magento\Integration\Model\Oauth\Consumer
Exceptions
}

Implements OauthServiceInterface.

Definition at line 200 of file OauthService.php.

201  {
202  try {
203  return $this->_consumerFactory->create()->load($key, 'key');
204  } catch (\Magento\Framework\Exception\LocalizedException $exception) {
205  throw $exception;
206  } catch (\Exception $exception) {
207  throw new \Magento\Framework\Oauth\Exception(
208  __("The oAuth consumer account couldn't be loaded due to an unexpected error. Please try again later.")
209  );
210  }
211  }
__()
Definition: __.php:13

◆ postToConsumer()

postToConsumer (   $consumerId,
  $endpointUrl 
)

{Execute post to integration (consumer) HTTP Post URL. Generate and return oauth_verifier.

Parameters
int$consumerId- The consumer Id.
string$endpointUrl- The integration endpoint Url (for HTTP Post)
Returns
string - The oauth_verifier.
Exceptions
}

Implements OauthServiceInterface.

Definition at line 216 of file OauthService.php.

217  {
218  try {
219  $consumer = $this->loadConsumer($consumerId);
220  $consumer->setUpdatedAt($this->getDateHelper()->gmtDate());
221  $consumer->save();
222  if (!$consumer->getId()) {
223  throw new \Magento\Framework\Oauth\Exception(
224  __('A consumer with "%1" ID doesn\'t exist. Verify the ID and try again.', $consumerId)
225  );
226  }
227  $consumerData = $consumer->getData();
228  $verifier = $this->_tokenFactory->create()->createVerifierToken($consumerId);
229  $storeBaseUrl = $this->_storeManager->getStore()->getBaseUrl();
230  $this->_httpClient->setUri($endpointUrl);
231  $this->_httpClient->setParameterPost(
232  [
233  'oauth_consumer_key' => $consumerData['key'],
234  'oauth_consumer_secret' => $consumerData['secret'],
235  'store_base_url' => $storeBaseUrl,
236  'oauth_verifier' => $verifier->getVerifier(),
237  ]
238  );
239  $maxredirects = $this->_dataHelper->getConsumerPostMaxRedirects();
240  $timeout = $this->_dataHelper->getConsumerPostTimeout();
241  $this->_httpClient->setConfig(['maxredirects' => $maxredirects, 'timeout' => $timeout]);
242  $this->_httpClient->request(\Magento\Framework\HTTP\ZendClient::POST);
243  return $verifier->getVerifier();
244  } catch (\Magento\Framework\Exception\LocalizedException $exception) {
245  throw $exception;
246  } catch (\Magento\Framework\Oauth\Exception $exception) {
247  throw $exception;
248  } catch (\Exception $exception) {
249  $this->_logger->critical($exception);
250  throw new \Magento\Framework\Oauth\Exception(
251  __('The attempt to post data to consumer failed due to an unexpected error. Please try again later.')
252  );
253  }
254  }
__()
Definition: __.php:13

Field Documentation

◆ $_consumerFactory

$_consumerFactory
protected

Definition at line 33 of file OauthService.php.

◆ $_dataHelper

$_dataHelper
protected

Definition at line 43 of file OauthService.php.

◆ $_httpClient

$_httpClient
protected

Definition at line 48 of file OauthService.php.

◆ $_logger

$_logger
protected

Definition at line 53 of file OauthService.php.

◆ $_oauthHelper

$_oauthHelper
protected

Definition at line 58 of file OauthService.php.

◆ $_storeManager

$_storeManager
protected

Definition at line 28 of file OauthService.php.

◆ $_tokenFactory

$_tokenFactory
protected

Definition at line 38 of file OauthService.php.

◆ $_tokenProvider

$_tokenProvider
protected

Definition at line 63 of file OauthService.php.


The documentation for this class was generated from the following file: