152 lines
3.5 KiB
PHP
152 lines
3.5 KiB
PHP
|
<?php
|
||
|
|
||
|
/**
|
||
|
* Dropbox OAuth
|
||
|
*
|
||
|
* @package Dropbox
|
||
|
* @copyright Copyright (C) 2010 Rooftop Solutions. All rights reserved.
|
||
|
* @author Evert Pot (http://www.rooftopsolutions.nl/)
|
||
|
* @license http://code.google.com/p/dropbox-php/wiki/License MIT
|
||
|
*/
|
||
|
|
||
|
|
||
|
/**
|
||
|
* This class is an abstract OAuth class.
|
||
|
*
|
||
|
* It must be extended by classes who wish to provide OAuth functionality
|
||
|
* using different libraries.
|
||
|
*/
|
||
|
abstract class Dropbox_OAuth {
|
||
|
|
||
|
/**
|
||
|
* After a user has authorized access, dropbox can redirect the user back
|
||
|
* to this url.
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public $authorizeCallbackUrl = null;
|
||
|
|
||
|
/**
|
||
|
* Uri used to fetch request tokens
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
const URI_REQUEST_TOKEN = 'https://api.dropbox.com/1/oauth/request_token';
|
||
|
|
||
|
/**
|
||
|
* Uri used to redirect the user to for authorization.
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
const URI_AUTHORIZE = 'https://www.dropbox.com/1/oauth/authorize';
|
||
|
|
||
|
/**
|
||
|
* Uri used to
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
const URI_ACCESS_TOKEN = 'https://api.dropbox.com/1/oauth/access_token';
|
||
|
|
||
|
/**
|
||
|
* An OAuth request token.
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $oauth_token = null;
|
||
|
|
||
|
/**
|
||
|
* OAuth token secret
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $oauth_token_secret = null;
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Constructor
|
||
|
*
|
||
|
* @param string $consumerKey
|
||
|
* @param string $consumerSecret
|
||
|
*/
|
||
|
abstract public function __construct($consumerKey, $consumerSecret);
|
||
|
|
||
|
/**
|
||
|
* Sets the request token and secret.
|
||
|
*
|
||
|
* The tokens can also be passed as an array into the first argument.
|
||
|
* The array must have the elements token and token_secret.
|
||
|
*
|
||
|
* @param string|array $token
|
||
|
* @param string $token_secret
|
||
|
* @return void
|
||
|
*/
|
||
|
public function setToken($token, $token_secret = null) {
|
||
|
|
||
|
if (is_array($token)) {
|
||
|
$this->oauth_token = $token['token'];
|
||
|
$this->oauth_token_secret = $token['token_secret'];
|
||
|
} else {
|
||
|
$this->oauth_token = $token;
|
||
|
$this->oauth_token_secret = $token_secret;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the oauth request tokens as an associative array.
|
||
|
*
|
||
|
* The array will contain the elements 'token' and 'token_secret'.
|
||
|
*
|
||
|
* @return array
|
||
|
*/
|
||
|
public function getToken() {
|
||
|
|
||
|
return array(
|
||
|
'token' => $this->oauth_token,
|
||
|
'token_secret' => $this->oauth_token_secret,
|
||
|
);
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the authorization url
|
||
|
*
|
||
|
* @param string $callBack Specify a callback url to automatically redirect the user back
|
||
|
* @return string
|
||
|
*/
|
||
|
public function getAuthorizeUrl($callBack = null) {
|
||
|
|
||
|
// Building the redirect uri
|
||
|
$token = $this->getToken();
|
||
|
$uri = self::URI_AUTHORIZE . '?oauth_token=' . $token['token'];
|
||
|
if ($callBack) $uri.='&oauth_callback=' . $callBack;
|
||
|
return $uri;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Fetches a secured oauth url and returns the response body.
|
||
|
*
|
||
|
* @param string $uri
|
||
|
* @param mixed $arguments
|
||
|
* @param string $method
|
||
|
* @param array $httpHeaders
|
||
|
* @return string
|
||
|
*/
|
||
|
public abstract function fetch($uri, $arguments = array(), $method = 'GET', $httpHeaders = array());
|
||
|
|
||
|
/**
|
||
|
* Requests the OAuth request token.
|
||
|
*
|
||
|
* @return array
|
||
|
*/
|
||
|
abstract public function getRequestToken();
|
||
|
|
||
|
/**
|
||
|
* Requests the OAuth access tokens.
|
||
|
*
|
||
|
* @return array
|
||
|
*/
|
||
|
abstract public function getAccessToken();
|
||
|
|
||
|
}
|