protected function _finish($code, $originalRedirectUri) { // This endpoint requires "Basic" auth. $clientCredentials = $this->appInfo->getKey() . ":" . $this->appInfo->getSecret(); $authHeaderValue = "Basic " . base64_encode($clientCredentials); $response = RequestUtil::doPostWithSpecificAuth($this->clientIdentifier, $authHeaderValue, $this->userLocale, $this->appInfo->getHost()->getApi(), "1/oauth2/token", array("grant_type" => "authorization_code", "code" => $code, "redirect_uri" => $originalRedirectUri)); if ($response->statusCode !== 200) { throw RequestUtil::unexpectedStatus($response); } $parts = RequestUtil::parseResponseJson($response->body); if (!array_key_exists('token_type', $parts) or !is_string($parts['token_type'])) { throw new Exception_BadResponse("Missing \"token_type\" field."); } $tokenType = $parts['token_type']; if (!array_key_exists('access_token', $parts) or !is_string($parts['access_token'])) { throw new Exception_BadResponse("Missing \"access_token\" field."); } $accessToken = $parts['access_token']; if (!array_key_exists('uid', $parts) or !is_string($parts['uid'])) { throw new Exception_BadResponse("Missing \"uid\" string field."); } $userId = $parts['uid']; if ($tokenType !== "Bearer" && $tokenType !== "bearer") { throw new Exception_BadResponse("Unknown \"token_type\"; expecting \"Bearer\", got " . Client::q($tokenType)); } return array($accessToken, $userId); }
/** * Make a Dropbox API call to disable the given OAuth 1 access token. * * See <a href="https://www.dropbox.com/developers/core/docs#disable-token">/disable_access_token</a>. * * @param OAuth1AccessToken $oauth1AccessToken * * @throws Exception */ function disableOAuth1AccessToken($oauth1AccessToken) { OAuth1AccessToken::checkArg("oauth1AccessToken", $oauth1AccessToken); $response = self::doPost($oauth1AccessToken, "1/disable_access_token"); if ($response->statusCode !== 200) { throw RequestUtil::unexpectedStatus($response); } }
/** * Moves a file or folder to a new location. * * See <a href="https://www.dropbox.com/developers/core/docs#fileops-move">/fileops/move</a>. * * @param string $fromPath * The source Dropbox path (UTF-8). * * @param string $toPath * The destination Dropbox path (UTF-8). * * @return mixed * The <a href="https://www.dropbox.com/developers/core/docs#metadata-details">metadata * object</a> for the destination file or folder. * * @throws Exception */ function move($fromPath, $toPath) { Path::checkArgNonRoot("fromPath", $fromPath); Path::checkArgNonRoot("toPath", $toPath); $response = $this->doPost($this->apiHost, "1/fileops/move", array("root" => "auto", "from_path" => $fromPath, "to_path" => $toPath)); if ($response->statusCode !== 200) { throw RequestUtil::unexpectedStatus($response); } return RequestUtil::parseResponseJson($response->body); }
protected function _finish($code, $originalRedirectUri) { $url = RequestUtil::buildUri($this->appInfo->getHost()->getApi(), "1/oauth2/token"); $params = array("grant_type" => "authorization_code", "code" => $code, "redirect_uri" => $originalRedirectUri, "locale" => $this->userLocale); $curl = RequestUtil::mkCurlWithoutAuth($this->clientIdentifier, $url); // Add Basic auth header. $basic_auth = $this->appInfo->getKey() . ":" . $this->appInfo->getSecret(); $curl->addHeader("Authorization: Basic " . base64_encode($basic_auth)); $curl->set(CURLOPT_POST, true); $curl->set(CURLOPT_POSTFIELDS, RequestUtil::buildPostBody($params)); $curl->set(CURLOPT_RETURNTRANSFER, true); $response = $curl->exec(); if ($response->statusCode !== 200) { throw RequestUtil::unexpectedStatus($response); } $parts = RequestUtil::parseResponseJson($response->body); if (!array_key_exists('token_type', $parts) or !is_string($parts['token_type'])) { throw new Exception_BadResponse("Missing \"token_type\" field."); } $tokenType = $parts['token_type']; if (!array_key_exists('access_token', $parts) or !is_string($parts['access_token'])) { throw new Exception_BadResponse("Missing \"access_token\" field."); } $accessToken = $parts['access_token']; if (!array_key_exists('uid', $parts) or !is_string($parts['uid'])) { throw new Exception_BadResponse("Missing \"uid\" string field."); } $userId = $parts['uid']; if ($tokenType !== "Bearer" && $tokenType !== "bearer") { throw new Exception_BadResponse("Unknown \"token_type\"; expecting \"Bearer\", got " . Client::q($tokenType)); } return array($accessToken, $userId); }