3 require_once '../../env.inc.php';
4 require_once 'checks.php';
6 oauthconsumer_CheckUser();
8 $providers = OAuthProvider::get_all_oauthproviders();
9 if(count($providers)>0) {
11 <p>To get an access token, there are three steps involved: </p>
12 <ol><li>Get an unauthorized request token
13 <li>Authorize the request token
14 <li>Exchange the authorized request token for an access token </ol>
15 <p>Select a provider from the list below and get started!</p>
16 <form action="get_access_token.php" method="post">
18 <select name=providers>
19 <?php foreach ($providers as $provider) {
20 echo '<option value="'.$provider->get_id().'">'.$provider->get_name().'</option>';
23 <input type="submit" value="<?php echo _('Select') ?>"/>
27 $f_provider_name = "Provider";
28 $f_provider_id = getStringFromPost('providers');
30 $f_provider = OAuthProvider::get_provider($f_provider_id);
31 $f_provider_name = $f_provider->get_name();
32 $f_consumer_key = $f_provider->get_consumer_key();
33 $f_consumer_secret = $f_provider->get_consumer_secret();
34 $f_request_token_url = $f_provider->get_request_token_url();
35 $f_authorize_url = $f_provider->get_authorize_url();
36 $f_access_token_url = $f_provider->get_access_token_url();
40 <form action="get_access_token.php" method="post">
41 <?php echo '<input type="hidden" name="plugin_oauthconsumer_get_request_token" value="'.form_generate_key().'"/>' ?>
42 <?php echo '<input type="hidden" name="providers" value="'.$f_provider_id.'"/>' ?>
43 <table class="width75" align="center" cellspacing="1">
46 <td class="form-title" colspan="2"><?php echo _("<b>".$f_provider_name."</b>") ?></td>
50 <td class="category"><?php echo _('Consumer Key') ?></td>
51 <td><input name="consumer_key" maxlength="250" size="80" value="<?php echo $f_consumer_key ?>" readonly/></td>
55 <td class="category"><?php echo _('Request Token URL') ?></td>
56 <td><input name="request_token_url" maxlength="250" size="80" value="<?php echo $f_request_token_url ?>"/></td>
60 <td class="category"><?php echo _('Authorization URL') ?></td>
61 <td><input name="authorize_url" maxlength="250" size="80" value="<?php echo $f_authorize_url ?>"/></td>
65 <td class="category"><?php echo _('Access Token URL') ?></td>
66 <td><input name="access_token_url" maxlength="250" size="80" value="<?php echo $f_access_token_url ?>"/></td>
71 if((strcasecmp(substr($f_request_token_url, 0, 5),"https")==0) ||
72 (strcasecmp(substr($f_authorization_url, 0, 5),"https")==0) ||
73 (strcasecmp(substr($f_access_token_url, 0, 5),"https")==0)) {?>
74 <input type="checkbox" name="not_verify_ssl">Do not verify SSL Certificate</input> <br /><br />
77 $url_string = $f_request_token_url?"(from ".$f_request_token_url.")":"";
78 echo _('<b>Step 1: </b>Get Request Token '.$url_string) ?>
80 <input type="submit" value="<?php echo _('Go') ?>" />
84 $form_key = getStringFromPost('plugin_oauthconsumer_get_request_token');
85 $f_provider_id = getStringFromPost('providers');
86 $f_not_verify_ssl = getStringFromPost('not_verify_ssl');
87 if($form_key && $f_provider_id && form_key_is_valid($form_key)) {
88 form_release_key($form_key);
90 $f_provider = OAuthProvider::get_provider($f_provider_id);
91 $f_provider_name = $f_provider->get_name();
92 $f_consumer_key = $f_provider->get_consumer_key();
93 $f_consumer_secret = $f_provider->get_consumer_secret();
94 $f_request_token_url = getStringFromPost('request_token_url');
95 $f_authorize_url = getStringFromPost('authorize_url');
96 $f_access_token_url = getStringFromPost('access_token_url');
98 $scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on") ? 'http' : 'https';
99 $http_url = $scheme . '://' . $_SERVER['HTTP_HOST'];
100 $callback_url = $http_url."/plugins/".$pluginname."/callback.php";
101 $parameters = array("oauth_callback"=>$callback_url);
103 $ff_consumer = new OAuthConsumer($f_consumer_key, $f_consumer_secret);
105 $ff_request1 = OAuthRequest::from_consumer_and_token($ff_consumer, false, "GET", $f_request_token_url, $parameters);
106 $hmac = new OAuthSignatureMethod_HMAC_SHA1();
107 $ff_request1->sign_request($hmac, $ff_consumer, NULL);
109 //sending request with curl
112 curl_setopt($curl, CURLOPT_URL, $ff_request1->to_url());
113 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
115 //workaround for untrusted security certificates
116 if($f_not_verify_ssl) {
117 curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, 0);
118 curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0);
119 session_set_cookie('NOT_VERIFY_SSL', 1, 0, '', '', false, true);
122 $request_token_string = curl_exec ($curl);
124 if($request_token_string === false)
126 trigger_error('Error in curl : '.curl_error($curl), E_USER_WARNING);
129 //print_r($request_token_string);
130 parse_str($request_token_string, $request_token);
132 if(array_key_exists('oauth_token', $request_token)&&array_key_exists('oauth_token_secret', $request_token)) {
133 echo _("New request token received!") . "<br />";
134 echo _("Request Token Key") . _(": ") . $request_token['oauth_token'] . "<br />";
135 echo _("Request Token Secret") . _(": ") . $request_token['oauth_token_secret'] . "<br /><br />";
136 //print_r($request_token);
137 setcookie('PROVIDER', $f_provider_id, 0, '', '', false, true);
138 setcookie('OAUTH_TOKEN', $request_token['oauth_token'], 0, '', '', false, true);
139 setcookie('OAUTH_TOKEN_SECRET', $request_token['oauth_token_secret'], 0, '', '', false, true);
140 $oauth_request_token = new OAuthToken($request_token['oauth_token'], $request_token['oauth_token_secret']);
143 if (strpos($f_authorize_url,"?")!=false) $separator = "&";
145 $new_user_authorization_url = $f_authorize_url . $separator . "oauth_token=".$request_token['oauth_token']."&oauth_callback=".$callback_url;
146 //print_r($new_user_authorization_url);
150 <form action="get_access_token.php" method="post">
151 <?php echo '<input type="hidden" name="authorization_url" value="'.$new_user_authorization_url.'"/>' ?>
153 echo _('<b>Step 2: </b>Authorize the Request Token (from '.$f_authorize_url.")") ?>
155 <input type="submit" value="<?php echo _('Go') ?>" />
158 //header("Location:".$new_user_authorization_url);
160 echo $HTML->error_msg(htmlspecialchars("Error in retrieving request token"));
165 $f_authorization_url = getStringFromPost('authorization_url');
166 if($f_authorization_url) {
167 header("Location:".$f_authorization_url);
170 echo '<p>'. _('There are no OAuth Providers registered in the database currently. Please ask your forge administer to create one.').'</p>';
175 echo util_make_link('/plugins/'.$pluginname.'/providers.php', _('OAuth Providers')). ' <br />';
176 echo util_make_link('/plugins/'.$pluginname.'/access_tokens.php', _('Access tokens')).'<br /> ';
178 site_user_footer(array());