public function testDefaults() { $this->assertFalse($this->_sut->isExpired()); $this->assertNull($this->_sut->getAccessToken()); $this->assertNull($this->_sut->getRefreshToken()); $this->assertEquals(tubepress_api_http_oauth_v2_TokenInterface::EOL_UNKNOWN, $this->_sut->getEndOfLifeUnixTime()); $this->assertEquals(array(), $this->_sut->getExtraParams()); }
public function getStoredToken(tubepress_spi_http_oauth2_Oauth2ProviderInterface $provider) { $requestedSlug = $this->_context->get(tubepress_api_options_Names::OAUTH2_TOKEN); $tokens = $this->_context->get(tubepress_api_options_Names::OAUTH2_TOKENS); $decoded = json_decode($tokens, true); $providerName = $provider->getName(); if (!isset($decoded[$providerName])) { return null; } $providerTokens = $decoded[$providerName]; $explicitSlug = $requestedSlug != ''; if (!is_array($providerTokens)) { return null; } if ($explicitSlug) { if ($explicitSlug === 'none' || !isset($providerTokens[$requestedSlug])) { return null; } } else { if (count($providerTokens) === 0) { return null; } $slugs = array_keys($providerTokens); $requestedSlug = $slugs[0]; } $tokenData = $providerTokens[$requestedSlug]; $accessToken = $tokenData[self::$_ACCESS_TOKEN]; $refreshToken = isset($tokenData[self::$_REFRESH_TOKEN]) ? $tokenData[self::$_REFRESH_TOKEN] : null; $expiry = intval($tokenData[self::$_EXPIRY_UNIX]); $extra = $tokenData[self::$_EXTRA]; $toReturn = new tubepress_http_oauth2_impl_token_Token(); $toReturn->setAccessToken($accessToken); $toReturn->setExtraParams($extra); $toReturn->setEndOfLifeUnixTime($expiry); if ($refreshToken) { $toReturn->setRefreshToken($refreshToken); } return $toReturn; }
private function _buildTokenFromResponse(tubepress_spi_http_oauth2_Oauth2ProviderInterface $provider, tubepress_api_http_message_ResponseInterface $response) { $body = $response->getBody()->toString(); $decoded = json_decode($body, true); if (!is_array($decoded)) { throw new RuntimeException(sprintf('%s returned invalid JSON in their access token response', $provider->getDisplayName())); } if (!isset($decoded['access_token'])) { throw new RuntimeException(sprintf('%s did not return an access token in their response', $provider->getDisplayName())); } if ($provider->getAccessTokenType() != '' && !isset($decoded['token_type'])) { throw new RuntimeException(sprintf('%s did not return a token type in their response', $provider->getDisplayName())); } $tokenType = $decoded['token_type']; if ($tokenType !== $provider->getAccessTokenType()) { throw new RuntimeException(sprintf('%s should have returned a token type of %s but instead returned %s', $provider->getDisplayName(), $provider->getAccessTokenType(), $tokenType)); } $toReturn = new tubepress_http_oauth2_impl_token_Token(); $toReturn->setAccessToken($decoded['access_token']); if (isset($decoded['expires_in'])) { $toReturn->setLifetimeInSeconds(intval($decoded['expires_in'])); } if (isset($decoded['refresh_token'])) { $toReturn->setRefreshToken($decoded['refresh_token']); } $keysToFilter = array('access_token', 'expires_in', 'refresh_token'); $extraParams = array_diff_key($decoded, array_flip($keysToFilter)); $toReturn->setExtraParams($extraParams); return $toReturn; }