diff options
| author | Horus3 | 2014-02-24 16:42:14 +0100 |
|---|---|---|
| committer | Horus3 | 2014-02-24 16:42:14 +0100 |
| commit | 06f945f27840b53e57795dadbc38e76f7e11ab1c (patch) | |
| tree | 689d5c7f4ffa15460c7e90f47c6a7dd59ce4e8bd /zend/demos/Zend/Gdata/3LeggedOAuth/index.php | |
| download | random-06f945f27840b53e57795dadbc38e76f7e11ab1c.tar.gz | |
init
Diffstat (limited to 'zend/demos/Zend/Gdata/3LeggedOAuth/index.php')
| -rwxr-xr-x | zend/demos/Zend/Gdata/3LeggedOAuth/index.php | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/zend/demos/Zend/Gdata/3LeggedOAuth/index.php b/zend/demos/Zend/Gdata/3LeggedOAuth/index.php new file mode 100755 index 0000000..59aab08 --- /dev/null +++ b/zend/demos/Zend/Gdata/3LeggedOAuth/index.php @@ -0,0 +1,190 @@ +<?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-2012 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 +} |
