| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- <?php
- /**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category Zend
- * @package Zend_Gdata
- * @subpackage Demos
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
- /**
- * Sample code to demonstrate accessing a Google Data feed using OAuth for
- * authorization. Utilizes the Zend Framework Zend_OAuth components to
- * communicate with the API(s).
- *
- * NOTE: As this is sample code, not all of the functions do full error
- * handling.
- */
- require_once 'Zend/Gdata/Docs.php';
- require_once 'Zend/Gdata/Spreadsheets.php';
- require_once 'Gdata_OAuth_Helper.php';
- session_start();
- // Application constants. Replace these values with your own.
- $APP_NAME = 'google-ZendGData3LOSample-1.0';
- $APP_URL = getAppURL();
- $scopes = array(
- 'https://docs.google.com/feeds/',
- 'http://spreadsheets.google.com/feeds/'
- );
- // Setup OAuth consumer. Thes values should be replaced with your registered
- // app's consumer key/secret.
- $CONSUMER_KEY = 'anonymous';
- $CONSUMER_SECRET = 'anonymous';
- $consumer = new Gdata_OAuth_Helper($CONSUMER_KEY, $CONSUMER_SECRET);
- // Main controller logic.
- switch (@$_REQUEST['action']) {
- case 'logout':
- logout($APP_URL);
- break;
- case 'request_token':
- $_SESSION['REQUEST_TOKEN'] = serialize($consumer->fetchRequestToken(
- implode(' ', $scopes), $APP_URL . '?action=access_token'));
- $consumer->authorizeRequestToken();
- break;
- case 'access_token':
- $_SESSION['ACCESS_TOKEN'] = serialize($consumer->fetchAccessToken());
- header('Location: ' . $APP_URL);
- break;
- default:
- if (isset($_SESSION['ACCESS_TOKEN'])) {
- $accessToken = unserialize($_SESSION['ACCESS_TOKEN']);
- $httpClient = $accessToken->getHttpClient(
- $consumer->getOauthOptions());
- $docsService = new Zend_Gdata_Docs($httpClient, $APP_NAME);
- $spreadsheetsService = new Zend_Gdata_Spreadsheets($httpClient,
- $APP_NAME);
- // Retrieve user's list of Google Docs and spreadsheet list.
- $docsFeed = $docsService->getDocumentListFeed();
- $spreadsheetFeed = $spreadsheetsService->getSpreadsheetFeed(
- 'http://spreadsheets.google.com/feeds/spreadsheets/private/full?max-results=100');
- renderHTML($accessToken, array($docsFeed, $spreadsheetFeed));
- } else {
- renderHTML();
- }
- }
- /**
- * Returns a the base URL of the current running web app.
- *
- * @return string
- */
- function getAppURL() {
- $pageURL = 'http';
- if ($_SERVER['HTTPS'] == 'on') {
- $pageURL .= 's';
- }
- $pageURL .= '://';
- if ($_SERVER['SERVER_PORT'] != '80') {
- $pageURL .= $_SERVER['SERVER_NAME'] . ':' .
- $_SERVER['SERVER_PORT'] . $_SERVER['PHP_SELF'];
- } else {
- $pageURL .= $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'];
- }
- return $pageURL;
- }
- /**
- * Removes session data and redirects the user to a URL.
- *
- * @param string $redirectUrl The URL to direct the user to after session data
- * is destroyed.
- * @return void
- */
- function logout($redirectUrl) {
- session_destroy();
- header('Location: ' . $redirectUrl);
- exit;
- }
- /**
- * Prints the token string and secret of the token passed in.
- *
- * @param Zend_OAuth_Token $token An access or request token object to print.
- * @return void
- */
- function printToken($token) {
- echo '<b>Token:</b>' . $token->getToken() . '<br>';
- echo '<b>Token secret:</b>' . $token->getTokenSecret() . '<br>';
- }
- /**
- * Prints basic properties of a Google Data feed.
- *
- * @param Zend_Gdata_Feed $feed A feed object to print.
- * @return void
- */
- function printFeed($feed) {
- echo '<ol>';
- foreach ($feed->entries as $entry) {
- $alternateLink = '';
- foreach ($entry->link as $link) {
- if ($link->getRel() == 'alternate') {
- $alternateLink = $link->getHref();
- }
- }
- echo "<li><a href=\"$alternateLink\" target=\"_new\">$entry->title</a></li>";
- }
- echo '</ol>';
- }
- /**
- * Renders the page's HTML.
- *
- * @param Zend_OAuth_Token $token (optional) The user's current OAuth token.
- * @param array $feeds (optional) An array of Zend_Gdata_Feed to print
- * information for.
- * @return void
- */
- function renderHTML($token=null, $feeds=null) {
- ?>
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset=utf-8 />
- <link href="style.css" type="text/css" rel="stylesheet"/>
- </head>
- <body>
- <?php if (!isset($_SESSION['ACCESS_TOKEN'])) { ?>
- <button onclick="location.href='<?php echo "$APP_URL?action=request_token" ?>';">Grant Access to this app!</button>
- <?php } else { ?>
- <div id="token_info">
- <span style="float:left;"><img src="http://code.google.com/apis/accounts/images/oauth_icon.png"></span>
- <div id="token"><?php printToken($token); ?></div>
- </div>
- <div id="logout"><a href="<?php echo "$APP_URL?action=logout"; ?>">Logout</a></div>
- <div style="clear:both;">
- <div id="doclist">
- <h4>First 100 documents from the <a href="http://code.google.com/apis/documents/" target="_new">Documents List Data API</a>:</h4>
- <div class="feed"><?php printFeed($feeds[0]); ?></div>
- </div>
- <div id="spreadsheets">
- <h4>First 100 spreadsheets from the <a href="http://code.google.com/apis/spreadsheets/" target="_new">Spreadsheets Data API</a>:</h4>
- <div class="feed"><?php printFeed($feeds[1]); ?></div>
- </div>
- </div>
- <?php } ?>
- </body>
- </html>
- <?php
- }
|