我正在使用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
有什么方法可以访问变量。还是有更好的方法来跟踪令牌?我希望与多家公司建立联系。
使用对象获取方法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();