Welcome to mirror list, hosted at ThFree Co, Russian Federation.

google.php « ajax « files_external « apps - github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 70adcb2c2ad4f7a8d10bab181544bef73deb604c (plain)
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
<?php

require_once 'Google/common.inc.php';

OCP\JSON::checkAppEnabled('files_external');
OCP\JSON::checkLoggedIn();
OCP\JSON::callCheck();

$consumer = new OAuthConsumer('anonymous', 'anonymous');
$sigMethod = new OAuthSignatureMethod_HMAC_SHA1();
if (isset($_POST['step'])) {
	switch ($_POST['step']) {
		case 1:
			if (isset($_POST['callback'])) {
				$callback = $_POST['callback'];
			} else {
				$callback = null;
			}
			$scope = 'https://docs.google.com/feeds/'
					.' https://docs.googleusercontent.com/'
					.' https://spreadsheets.google.com/feeds/';
			$url = 'https://www.google.com/accounts/OAuthGetRequestToken?scope='.urlencode($scope);
			$params = array('scope' => $scope, 'oauth_callback' => $callback);
			$request = OAuthRequest::from_consumer_and_token($consumer, null, 'GET', $url, $params);
			$request->sign_request($sigMethod, $consumer, null);
			$response = send_signed_request('GET', $url, array($request->to_header()), null, false);
			$token = array();
			parse_str($response, $token);
			if (isset($token['oauth_token']) && isset($token['oauth_token_secret'])) {
				$authUrl = 'https://www.google.com/accounts/OAuthAuthorizeToken?oauth_token='.$token['oauth_token'];
				OCP\JSON::success(array('data' => array('url' => $authUrl,
														'request_token' => $token['oauth_token'],
														'request_token_secret' => $token['oauth_token_secret'])));
			} else {
				OCP\JSON::error(array('data' => array(
					'message' => 'Fetching request tokens failed. Error: '.$response
					)));
			}
			break;
		case 2:
			if (isset($_POST['oauth_verifier'])
				&& isset($_POST['request_token'])
				&& isset($_POST['request_token_secret'])
			) {
				$token = new OAuthToken($_POST['request_token'], $_POST['request_token_secret']);
				$url = 'https://www.google.com/accounts/OAuthGetAccessToken';
				$request = OAuthRequest::from_consumer_and_token($consumer, $token, 'GET', $url,
																 array('oauth_verifier' => $_POST['oauth_verifier']));
				$request->sign_request($sigMethod, $consumer, $token);
				$response = send_signed_request('GET', $url, array($request->to_header()), null, false);
				$token = array();
				parse_str($response, $token);
				if (isset($token['oauth_token']) && isset($token['oauth_token_secret'])) {
					OCP\JSON::success(array('access_token' => $token['oauth_token'],
											'access_token_secret' => $token['oauth_token_secret']));
				} else {
					OCP\JSON::error(array('data' => array(
						'message' => 'Fetching access tokens failed. Error: '.$response
						)));
				}
			}
			break;
	}
}