-
Notifications
You must be signed in to change notification settings - Fork 0
/
Gdata_OAuth_Helper.php
124 lines (113 loc) · 3.86 KB
/
Gdata_OAuth_Helper.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php
require_once 'Zend/Oauth/Consumer.php';
require_once 'Zend/Gdata/Query.php';
//Added for Life Parser.
require_once('Zend/Gdata/EMail.php');
/**
* Wrapper class for Google's OAuth implementation. In particular, this helper
* bundles the token endpoints and manages the Google-specific parameters such
* as the hd and scope parameter.
*
* @category Zend
* @package Zend_Gdata
* @subpackage Demos
* @copyright Copyright (c) 2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Gdata_OAuth_Helper extends Zend_Oauth_Consumer {
// Google's default oauth parameters/constants.
private $_defaultOptions = array(
'requestScheme' => Zend_Oauth::REQUEST_SCHEME_HEADER,
'version' => '1.0',
'requestTokenUrl' => 'https://www.google.com/accounts/OAuthGetRequestToken',
'userAuthorizationUrl' => 'https://www.google.com/accounts/OAuthAuthorizeToken',
'accessTokenUrl' => 'https://www.google.com/accounts/OAuthGetAccessToken'
);
/**
* Create Gdata_OAuth_Helper object
*
* @param string $consumerKey OAuth consumer key (domain).
* @param string $consumerSecret (optional) OAuth consumer secret. Required if
* using HMAC-SHA1 for a signature method.
* @param string $sigMethod (optional) The oauth_signature method to use.
* Defaults to HMAC-SHA1. RSA-SHA1 is also supported.
*/
public function __construct($consumerKey, $consumerSecret=null,
$sigMethod='HMAC-SHA1') {
$this->_defaultOptions['consumerKey'] = $consumerKey;
$this->_defaultOptions['consumerSecret'] = $consumerSecret;
$this->_defaultOptions['signatureMethod'] = $sigMethod;
parent::__construct($this->_defaultOptions);
}
/**
* Getter for the oauth options array.
*
* @return array
*/
public function getOauthOptions() {
return $this->_defaultOptions;
}
/**
* Fetches a request token.
*
* @param string $scope The API scope or scopes separated by spaces to
* restrict data access to.
* @param mixed $callback The URL to redirect the user to after they have
* granted access on the approval page. Either a string or
* Zend_Gdata_Query object.
* @return Zend_OAuth_Token_Request|null
*/
public function fetchRequestToken($scope, $callback) {
if ($callback instanceof Zend_Gdata_Query) {
$uri = $callback->getQueryUrl();
} else {
$uri = $callback;
}
$this->_defaultOptions['callbackUrl'] = $uri;
$this->_config->setCallbackUrl($uri);
if (!isset($_SESSION['ACCESS_TOKEN'])) {
return parent::getRequestToken(array('scope' => $scope));
}
return null;
}
/**
* Redirects the user to the approval page
*
* @param string $domain (optional) The Google Apps domain to logged users in
* under or 'default' for Google Accounts. Leaving this parameter off
* will give users the universal login to choose an account to login
* under.
* @return void
*/
public function authorizeRequestToken($domain=null) {
$params = array();
if ($domain != null) {
$params = array('hd' => $domain);
}
$this->redirect($params);
}
public function customRequest($Uri) {
$this->redirect($Uri);
}
/**
* Upgrades an authorized request token to an access token.
*
* @return Zend_OAuth_Token_Access||null
*/
public function fetchAccessToken() {
if (!isset($_SESSION['ACCESS_TOKEN'])) {
if (!empty($_GET) && isset($_SESSION['REQUEST_TOKEN'])) {
return parent::getAccessToken(
$_GET, unserialize($_SESSION['REQUEST_TOKEN']));
}
}
return null;
}
public function fetchAccessTokenFromOpenId($stringToken)
{
if (!isset($_SESSION['ACCESS_TOKEN'])) {
return parent::getAccessTokenFromOpenId($stringToken);
}
return null;
}
}