add a readme file to the top level AContent directory
[acontent.git] / oauth_client.php
1 <?php\r
2 /************************************************************************/\r
3 /* AContent                                                             */\r
4 /************************************************************************/\r
5 /* Copyright (c) 2010                                                   */\r
6 /* Inclusive Design Institute                                           */\r
7 /*                                                                      */\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
12 \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
17 \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
20 \r
21 // This part should be moved into include/constants.inc.php, or, admin configuration\r
22 $oauth_server_url = TR_BASE_HREF;\r
23 \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
28 \r
29 //$client_callback_url = TR_BASE_HREF.'index.php';\r
30 $client_callback_url = 'http://www.google.ca';\r
31 \r
32 // initialize oauth client\r
33 $oAuthClientServersDAO = new OAuthClientServersDAO();\r
34 $oAuthClientTokensDAO = new OAuthClientTokensDAO();\r
35 \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
39 \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
44 \r
45 // handle OAUTH response on register consumer\r
46 foreach (explode('&', $oauth_server_response) as $rtn)\r
47 {\r
48         $rtn_pair = explode('=', $rtn);\r
49         \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
54 }\r
55 \r
56 if ($error <> '') echo $error;\r
57 else\r
58 {\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
62         }\r
63         else if ($server_info[0]['expire_threshold'] <> $expire_threshold)\r
64         {\r
65                 $oAuthClientServersDAO->Update($oauth_server_url, $consumer_key, $consumer_secret, $expire_threshold);\r
66         }\r
67         else\r
68         {\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
72         }\r
73 }\r
74 \r
75 $consumer = new OAuthConsumer($consumer_key, $consumer_secret, $client_callback_url);\r
76 \r
77 debug('consumer: '.$consumer);\r
78 debug('--- END OF REGISTERING CONSUMER ---');\r
79 \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
83 \r
84 $oauth_server_response = file_get_contents($req_req);\r
85 \r
86 debug('request token - request: '."\n".$req_req);\r
87 debug('request token - response: '."\n".$oauth_server_response);\r
88 \r
89 // handle OAUTH response on request token\r
90 $server_info = $oAuthClientServersDAO->getByOauthServer($oauth_server_url);\r
91 \r
92 foreach (explode('&', $oauth_server_response) as $rtn)\r
93 {\r
94         $rtn_pair = explode('=', $rtn);\r
95         \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
99 }\r
100 \r
101 if ($error == '' && strlen($request_token_key) > 0 && strlen($request_token_secret) > 0)\r
102 {\r
103         $oAuthClientTokensDAO->Create($server_info[0]['oauth_server_id'], $request_token_key, 'request', $request_token_secret, 0);\r
104 }\r
105 else\r
106 {\r
107         echo $error;\r
108 }\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
112 \r
113 debug('--- END OF REQESTING REQUEST TOKEN ---');\r
114 \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
119 \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
123 \r
124 $oauth_server_response = file_get_contents($access_req);\r
125 \r
126 debug('access token - request: '."\n".$access_req);\r
127 debug('access token - response: '."\n".$oauth_server_response);\r
128 \r
129 // handle OAUTH response on access token\r
130 foreach (explode('&', $oauth_server_response) as $rtn)\r
131 {\r
132         $rtn_pair = explode('=', $rtn);\r
133         \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
137 }\r
138 \r
139 if ($error == '' && strlen($access_token_key) > 0 && strlen($access_token_secret) > 0)\r
140 {\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
144 }\r
145 else\r
146 {\r
147         echo $error;\r
148 }\r
149 debug('--- END OF REQESTING ACCESS TOKEN ---');\r
150 ?>