PHP-Quickbooks OAuth from SDK-访问私有变量

问题描述 投票:0回答:1

我正在使用PHP SDK for Quickbooks:

$OAuth2LoginHelper = $this->dataService->getOAuth2LoginHelper();
$token = $OAuth2LoginHelper->exchangeAuthorizationCodeForToken($code, $realmId);

我获得了$ token变量的对象:

QuickBooksOnline\API\Core\OAuth\OAuth2\OAuth2AccessToken Object
(
    [accessTokenKey:QuickBooksOnline\API\Core\OAuth\OAuth2\OAuth2AccessToken:private] => zzz
    [tokenType:QuickBooksOnline\API\Core\OAuth\OAuth2\OAuth2AccessToken:private] => bearer
    [refresh_token:QuickBooksOnline\API\Core\OAuth\OAuth2\OAuth2AccessToken:private] => zzz
    [accessTokenExpiresAt:QuickBooksOnline\API\Core\OAuth\OAuth2\OAuth2AccessToken:private] => zzz
    [refreshTokenExpiresAt:QuickBooksOnline\API\Core\OAuth\OAuth2\OAuth2AccessToken:private] => zzz
    [accessTokenValidationPeriod:QuickBooksOnline\API\Core\OAuth\OAuth2\OAuth2AccessToken:private] => 3600
    [refreshTokenValidationPeriod:QuickBooksOnline\API\Core\OAuth\OAuth2\OAuth2AccessToken:private] => 8726400
    [clientID:QuickBooksOnline\API\Core\OAuth\OAuth2\OAuth2AccessToken:private] => zzz
    [clientSecret:QuickBooksOnline\API\Core\OAuth\OAuth2\OAuth2AccessToken:private] => zzz
    [realmID:QuickBooksOnline\API\Core\OAuth\OAuth2\OAuth2AccessToken:private] => zzz
    [baseURL:QuickBooksOnline\API\Core\OAuth\OAuth2\OAuth2AccessToken:private] => 
)

现在,我想将值保存在数据库甚至entore对象中,但我想跟踪令牌期限,但是当我尝试访问该变量时,会收到以下消息:

echo ($accessToken->accessTokenValidationPeriod);

Symfony\Component\Debug\Exception\FatalThrowableError
Cannot access private property QuickBooksOnline\API\Core\OAuth\OAuth2\OAuth2AccessToken::$accessTokenValidationPeriod 

有什么方法可以访问变量。还是有更好的方法来跟踪令牌?我希望与多家公司建立联系。

php quickbooks quickbooks-online
1个回答
0
投票

使用对象获取方法QuickBooksOnline\API\Core\OAuth\OAuth2::getAccessTokenValidationPeriodInSeconds()代替直接属性引用[sic]

echo $accessToken->getAccessTokenValidationPeriodInSeconds();

如果尚未设置,使用该方法将抛出QuickBooksOnline\API\Exception\SdkException

为了避免异常,您需要处理该异常。

try{
   $validationPeriod = $accessToken->getAccessTokenValidationPeriodInSeconds();
} catch(QuickBooksOnline\API\Exception\SdkException $e) {
   $validationPeriod = null;
}
echo $validationPeriod;

或者,您可以使用Reflection类来更新所需属性的可访问性并检索其值。

$ref = new \ReflectionObject($accessToken);
$refProperty = $ref->getProperty('accessTokenValidationPeriod');
$refProperty->setAccessible(true);
$validationPeriod = $refProperty->getValue();
© www.soinside.com 2019 - 2024. All rights reserved.