У меня есть магазин Magento 2.3, в котором я пытаюсь синхронизировать некоторые данные с Quickbooks Online.Я создал приложение QBO, но я впервые использую oauth, и я немного запутался в том, как хранить и использовать токены доступа / обновления.
Согласно документу Quickbooks мне нужно хранить последний токен обновления:
Каждый токен доступа может быть действителен только в течение часа после его создания.Если вы попытаетесь сделать вызов API через час с тем же токеном доступа, запрос будет заблокирован QBO.Вот для чего используется токен обновления.Он используется для запроса нового токена доступа после истечения срока действия токена, так что вы можете получить доступ к компании QBO через час.Просто помните, что всякий раз, когда вы выполняете вызов API refreshToken, всегда СОХРАНЯЙТЕ ПОСЛЕДНЮЮ ОБНОВЛЕННУЮ СИМВОЛ в своей сессии или базе данных.В протоколе QuickBooks Online OAuth 2 необходимо хранить не токен доступа, а токен обновления, который необходимо сохранить.
Поэтому мой вопрос заключается в том, как правильно хранить и запрашивать мойобновлять токен, чтобы генерировать новый токен доступа каждый раз, когда мой API выполняет вызов для синхронизации данных.
В настоящее время я напрямую использую свои токены OAuth, жестко запрограммировав их в свой вспомогательный файл:
<?php
namespace Company\Module\Helper;
use QuickBooksOnline\API\DataService\DataService;
class Data extends \Magento\Framework\App\Helper\AbstractHelper
{
public function getConfigurationSetting()
{
$dataService = DataService::Configure(array(
'auth_mode' => 'oauth2',
'ClientID' => '<<my ClientID',
'ClientSecret' => '<<my ClientSecret>>',
'accessTokenKey' => 'xxxxxx',
'refreshTokenKey' => 'xxxxxx',
'QBORealmID' => "123xxxxxxx",
'baseUrl' => 'Development'
));
$OAuth2LoginHelper = $dataService->getOAuth2LoginHelper();
$refreshedAccessTokenObj = $OAuth2LoginHelper->refreshToken();
$error = $OAuth2LoginHelper->getLastError();
if ($error){
$dataService->throwExceptionOnError(true);
} else {
$dataService->updateOAuth2Token($refreshedAccessTokenObj);
}
return $dataService;
}
}
А потом я звоню с моего контроллера:
<?php
namespace Company\Module\Observer;
use Magento\Framework\Event\ObserverInterface;
use QuickBooksOnline\API\DataService\DataService;
class CreateQbInvoice implements ObserverInterface
{
protected $helperData;
public function __construct(
\Company\Module\Helper\Data $helperData
){
$this->helperData = $helperData;
}
public function execute()
{
// Prep Data Services
$dataService = $this->helperData->getConfigurationSetting();
...
Теперь это работает, пока не истечет мой токен доступа, и мне нужно сгенерировать новый, я просто не уверен, как обновить мой токен.получить доступ к токену и правильно сохранить новый токен обновления, чтобы всегда обновлять доступ к моему приложению.