diff options
author | Michael Gapczynski <GapczynskiM@gmail.com> | 2012-06-13 13:54:32 -0400 |
---|---|---|
committer | Michael Gapczynski <GapczynskiM@gmail.com> | 2012-06-13 13:54:50 -0400 |
commit | bd01e9346941fa85b4bb96a42cecdbc50e51c368 (patch) | |
tree | c72a41ad073894ddb4f4811e197d9cd7725bc777 /apps/files_external/ajax | |
parent | 613a122437a5fff0eb8c502719f8203ea0a61e81 (diff) | |
download | nextcloud-server-bd01e9346941fa85b4bb96a42cecdbc50e51c368.tar.gz nextcloud-server-bd01e9346941fa85b4bb96a42cecdbc50e51c368.zip |
Add support for mounting Google Drive in external storage UI
Diffstat (limited to 'apps/files_external/ajax')
-rw-r--r-- | apps/files_external/ajax/google.php | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/apps/files_external/ajax/google.php b/apps/files_external/ajax/google.php new file mode 100644 index 00000000000..23ecfc3708d --- /dev/null +++ b/apps/files_external/ajax/google.php @@ -0,0 +1,51 @@ +<?php + +require_once 'Google/common.inc.php'; + +OCP\JSON::checkAppEnabled('files_external'); +OCP\JSON::checkLoggedIn(); +$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; + } +} + +?>
\ No newline at end of file |