setUri(self::AUTHSUB_SESSION_TOKEN_URI); $headers['authorization'] = 'AuthSub token="' . $token . '"'; $useragent = 'Zend_Framework_Gdata/' . Zend_Version::VERSION; $client->setConfig(array( 'strictredirects' => true, 'useragent' => $useragent ) ); $client->setHeaders($headers); try { $response = $client->request('GET'); } catch (Zend_Http_Client_Exception $e) { require_once 'Zend/Gdata/App/HttpException.php'; throw new Zend_Gdata_App_HttpException($e->getMessage(), $e); } // Parse Google's response if ($response->isSuccessful()) { $goog_resp = array(); foreach (explode("\n", $response->getBody()) as $l) { $l = chop($l); if ($l) { list($key, $val) = explode('=', chop($l), 2); $goog_resp[$key] = $val; } } return $goog_resp['Token']; } else { require_once 'Zend/Gdata/App/AuthException.php'; throw new Zend_Gdata_App_AuthException('Token upgrade failed. Reason: ' . $response->getBody()); } } /** * Revoke a token * * @param string $token * @return boolean * @throws Zend_Gdata_App_HttpException */ public static function AuthSubRevokeToken($token, $client = null) { if ($client == null) { $client = new Zend_Http_Client(); } if (!$client instanceof Zend_Http_Client) { require_once 'Zend/Gdata/App/HttpException.php'; throw new Zend_Gdata_App_HttpException('Client is not an instance of Zend_Http_Client.'); } $client->setUri(self::AUTHSUB_REVOKE_TOKEN_URI); $headers['authorization'] = 'AuthSub token="' . $token . '"'; $useragent = 'Zend_Framework_Gdata/' . Zend_Version::VERSION . ' ' . $source; $client->setConfig(array( 'strictredirects' => true, 'useragent' => $useragent ) ); $client->setHeaders($headers); ob_start(); try { $response = $client->request('GET'); } catch (Zend_Http_Client_Exception $e) { require_once 'Zend/Gdata/App/HttpException.php'; throw new Zend_Gdata_App_HttpException($e->getMessage(), $e); } ob_end_clean(); // Parse Google's response if ($response->isSuccessful()) { return true; } else { return false; } } /** * get token information * * @param string $token */ public static function getAuthSubTokenInfo($token, $client = null) { if ($client == null) { $client = new Zend_Http_Client(); } if (!$client instanceof Zend_Http_Client) { require_once 'Zend/Gdata/App/HttpException.php'; throw new Zend_Gdata_App_HttpException('Client is not an instance of Zend_Http_Client.'); } $client->setUri(self::AUTHSUB_TOKEN_INFO_URI); $headers['authorization'] = 'AuthSub token="' . $token . '"'; $client->setHeaders($headers); ob_start(); try { $response = $client->request('GET'); } catch (Zend_Http_Client_Exception $e) { require_once 'Zend/Gdata/App/HttpException.php'; throw new Zend_Gdata_App_HttpException($e->getMessage(), $e); } ob_end_clean(); return $response->getBody(); } public static function getHttpClient($token, $client = null) { if ($client == null) { $client = new Zend_Http_Client(); } if (!$client instanceof Zend_Http_Client) { require_once 'Zend/Gdata/App/HttpException.php'; throw new Zend_Gdata_App_HttpException('Client is not an instance of Zend_Http_Client.'); } $useragent = 'Zend_Framework_Gdata/' . Zend_Version::VERSION; $client->setConfig(array( 'strictredirects' => true, 'useragent' => $useragent ) ); $headers['authorization'] = 'AuthSub token="' . $token . '"'; $client->setHeaders($headers); return $client; } }