2 /************************************************************************/
\r
4 /************************************************************************/
\r
5 /* Copyright (c) 2010 */
\r
6 /* Inclusive Design Institute */
\r
8 /* This program is free software. You can redistribute it and/or */
\r
9 /* modify it under the terms of the GNU General Public License */
\r
10 /* as published by the Free Software Foundation. */
\r
11 /************************************************************************/
\r
13 define('TR_INCLUDE_PATH', 'include/');
\r
14 require_once(TR_INCLUDE_PATH.'vitals.inc.php');
\r
15 require_once(TR_INCLUDE_PATH.'classes/Utility.class.php');
\r
16 require_once("oauth/lib/OAuth.php");
\r
18 require_once(TR_INCLUDE_PATH.'classes/DAO/OAuthClientServersDAO.class.php');
\r
19 require_once(TR_INCLUDE_PATH.'classes/DAO/OAuthClientTokensDAO.class.php');
\r
21 // This part should be moved into include/constants.inc.php, or, admin configuration
\r
22 $oauth_server_url = TR_BASE_HREF;
\r
24 $register_consumer_url = $oauth_server_url.'oauth/register_consumer.php';
\r
25 $request_token_url = $oauth_server_url.'oauth/request_token.php';
\r
26 $authorization_url = $oauth_server_url.'oauth/authorization.php';
\r
27 $access_token_url = $oauth_server_url.'oauth/access_token.php';
\r
29 //$client_callback_url = TR_BASE_HREF.'index.php';
\r
30 $client_callback_url = 'http://www.google.ca';
\r
32 // initialize oauth client
\r
33 $oAuthClientServersDAO = new OAuthClientServersDAO();
\r
34 $oAuthClientTokensDAO = new OAuthClientTokensDAO();
\r
36 $server_info = $oAuthClientServersDAO->getByOauthServer($oauth_server_url);
\r
37 $expire_threshold = 0;
\r
38 $sig_method = new OAuthSignatureMethod_HMAC_SHA1(); // use HMAC signature method as default
\r
40 // 1. register consumer
\r
41 $oauth_server_response = file_get_contents($register_consumer_url.'?consumer='.urlencode(TR_BASE_HREF).'&expire='.$expire_threshold);
\r
42 debug('register consumer - request: '.$register_consumer_url.'?consumer='.urlencode(TR_BASE_HREF).'&expire='.$expire_threshold);
\r
43 debug('register consumer - OAUTH response'.$oauth_server_response);
\r
45 // handle OAUTH response on register consumer
\r
46 foreach (explode('&', $oauth_server_response) as $rtn)
\r
48 $rtn_pair = explode('=', $rtn);
\r
50 if ($rtn_pair[0] == 'consumer_key') $consumer_key = $rtn_pair[1];
\r
51 if ($rtn_pair[0] == 'consumer_secret') $consumer_secret = $rtn_pair[1];
\r
52 if ($rtn_pair[0] == 'expire_threshold') $expire_threshold = $rtn_pair[1];
\r
53 if ($rtn_pair[0] == 'error') $error = $rtn_pair[1];
\r
56 if ($error <> '') echo $error;
\r
59 if (!is_array($server_info))
\r
60 { // new oauth server. save server and according consmer key/secret to communicating with this server.
\r
61 $oAuthClientServersDAO->Create($oauth_server_url, $consumer_key, $consumer_secret, $expire_threshold);
\r
63 else if ($server_info[0]['expire_threshold'] <> $expire_threshold)
\r
65 $oAuthClientServersDAO->Update($oauth_server_url, $consumer_key, $consumer_secret, $expire_threshold);
\r
69 $consumer_key = $server_info[0]['consumer_key'];
\r
70 $consumer_secret = $server_info[0]['consumer_secret'];
\r
71 $expire_threshold = $server_info[0]['expire_threshold'];
\r
75 $consumer = new OAuthConsumer($consumer_key, $consumer_secret, $client_callback_url);
\r
77 debug('consumer: '.$consumer);
\r
78 debug('--- END OF REGISTERING CONSUMER ---');
\r
80 // 2. get request token
\r
81 $req_req = OAuthRequest::from_consumer_and_token($consumer, NULL, "GET", $request_token_url);
\r
82 $req_req->sign_request($sig_method, $consumer, NULL);
\r
84 $oauth_server_response = file_get_contents($req_req);
\r
86 debug('request token - request: '."\n".$req_req);
\r
87 debug('request token - response: '."\n".$oauth_server_response);
\r
89 // handle OAUTH response on request token
\r
90 $server_info = $oAuthClientServersDAO->getByOauthServer($oauth_server_url);
\r
92 foreach (explode('&', $oauth_server_response) as $rtn)
\r
94 $rtn_pair = explode('=', $rtn);
\r
96 if ($rtn_pair[0] == 'oauth_token') $request_token_key = $rtn_pair[1];
\r
97 if ($rtn_pair[0] == 'oauth_token_secret') $request_token_secret = $rtn_pair[1];
\r
98 if ($rtn_pair[0] == 'error') $error = $rtn_pair[1];
\r
101 if ($error == '' && strlen($request_token_key) > 0 && strlen($request_token_secret) > 0)
\r
103 $oAuthClientTokensDAO->Create($server_info[0]['oauth_server_id'], $request_token_key, 'request', $request_token_secret, 0);
\r
109 //$request_token_key = '67adbd3067564a7ebe';
\r
110 //$request_token_secret = '8fc6f5eeae0af5d90e';
\r
111 $request_token = new OAuthToken($request_token_key, $request_token_secret);
\r
113 debug('--- END OF REQESTING REQUEST TOKEN ---');
\r
115 //// 3. authorization
\r
116 //// update oauth_client_tokens.user_id
\r
117 //$auth_req = $authorization_url.'?oauth_token='.$oauth_token.'&oauth_callback='.urlencode($client_callback_url);
\r
118 //header('Location: '.$auth_req);
\r
120 // 4. get access token
\r
121 $access_req = OAuthRequest::from_consumer_and_token($consumer, $request_token, "GET", $access_token_url);
\r
122 $access_req->sign_request($sig_method, $consumer, NULL);
\r
124 $oauth_server_response = file_get_contents($access_req);
\r
126 debug('access token - request: '."\n".$access_req);
\r
127 debug('access token - response: '."\n".$oauth_server_response);
\r
129 // handle OAUTH response on access token
\r
130 foreach (explode('&', $oauth_server_response) as $rtn)
\r
132 $rtn_pair = explode('=', $rtn);
\r
134 if ($rtn_pair[0] == 'oauth_token') $access_token_key = $rtn_pair[1];
\r
135 if ($rtn_pair[0] == 'oauth_token_secret') $access_token_secret = $rtn_pair[1];
\r
136 if ($rtn_pair[0] == 'error') $error = $rtn_pair[1];
\r
139 if ($error == '' && strlen($access_token_key) > 0 && strlen($access_token_secret) > 0)
\r
141 $token_info = $oAuthClientTokensDAO->getByTokenAndType($request_token_key, 'request');
\r
142 $oAuthClientTokensDAO->Create($token_info[0]['oauth_server_id'], $access_token_key, 'access', $access_token_secret, $token_info[0]['user_id']);
\r
143 $oAuthClientTokensDAO->deleteByTokenAndType($request_token_key, 'request');
\r
149 debug('--- END OF REQESTING ACCESS TOKEN ---');
\r