Я пытаюсь скопировать файл с локального хоста в аккаунт Dropbox. Я использую curl для генерации токена, как только я получаю токен. Я использую его для загрузки файла, но я получаю сообщение об ошибке, сообщающее, что Token Expired или не существует ,
Вот мой код:
## step1.php ##
<?php
session_start();
require_once('config.php');
$step_2_url = rawurlencode("http://nuftp.com/sanjeev/step-2.php");
$ch = curl_init();
$headers = array( 'Authorization: OAuth oauth_version="1.0",
oauth_signature_method="PLAINTEXT", oauth_consumer_key="' . $app_key . '",
oauth_signature="' . $app_secret . '&"' );
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch, CURLOPT_URL,
"https://api.dropbox.com/1/oauth/request_token" );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, TRUE );
$request_token_response = curl_exec( $ch );
error_log(var_export($request_token_response,true));parse_str( $request_token_response, $parsed_request_token );
$json_access = json_decode( $request_token_response );
if ( isset( $json_access->error ) ) {
echo '<br><br>FATAL ERROR: ' . $json_access->error . '<br><br>';
die();
}
$_SESSION['myapp'] = array();
$_SESSION['myapp']['oauth_request_token'] =
$parsed_request_token['oauth_token'];
$_SESSION['myapp']['oauth_request_token_secret'] =
$parsed_request_token['oauth_token_secret'];
header( 'Location: https://www.dropbox.com/1/oauth/authorize?oauth_token='
. $parsed_request_token['oauth_token'] . '&oauth_callback=' . $step_2_url );
## step2.php ##
<?php
session_start();
require_once('config.php');
include 'dropbox-sdk-php-1.1.4/lib/Dropbox/autoload.php';
use \Dropbox as dbx;$step_3_url = "step-3.php";
if ( isset( $_GET['oauth_token'] ) && isset( $_GET['uid'] ) && isset(
$_SESSION['myapp'] ) ) {
$ch = curl_init();
$headers = array( 'Authorization: OAuth oauth_version="1.0",
oauth_signature_method="PLAINTEXT", oauth_consumer_key="' . $app_key .
'", oauth_token="' .$_GET['oauth_token'] . '", oauth_signature="' .
$app_secret . '&' . $_SESSION['myapp']['oauth_request_token_secret'] . '"'
);
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch, CURLOPT_URL,
"https://api.dropbox.com/1/oauth/access_token" );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, TRUE );
$access_token_response = curl_exec( $ch );
error_log(var_export($request_token_response,true));
parse_str( $access_token_response, $parsed_access_token );
error_log( $access_token_response );
$json_access = json_decode( $access_token_response );if ( isset( $json_access->error ) ) {
echo '<br><br>FATAL ERROR: ' . $json_access->error . '<br><br>';
die();
}
$_SESSION['myapp']['uid'] = $parsed_access_token['uid'];
$_SESSION['myapp']['oauth_access_token'] =
$parsed_access_token['oauth_token'];
$_SESSION['myapp']['oauth_access_token_secret'] =
$parsed_access_token['oauth_token_secret'];$dbxClient = new dbx\Client($_GET['oauth_token'], "PHP-Example/1.0");
$accountInfo = $dbxClient->getAccountInfo();
print_r($accountInfo);
$f = fopen("working-draft.txt", "rb");
$result = $dbxClient->uploadFile("/working-draft.txt",
dbx\WriteMode::add(), $f);
fclose($f);
print_r($result);
$folderMetadata = $dbxClient->getMetadataWithChildren("/");
print_r($folderMetadata);$f = fopen("working-draft.txt", "w+b");
$fileMetadata = $dbxClient->getFile("/working-draft.txt", $f);
fclose($f);
print_r($fileMetadata);}
Кто-нибудь, пожалуйста, предложите мне, что делать и где я иду не так.
Мне удалось получить другой рабочий код, и он работает абсолютно нормально. Он выполняет загрузку и загрузку файлов в Dropbox. Вы можете получить рабочий код по ссылке ниже, однако в коде я вручную изменяю имена файлов для загрузки, вместо того, чтобы держать его в переменной, или даю возможность выбрать файл из каталога.
Если есть какие-либо вопросы, прокомментируйте здесь, а также верните меня на [email protected]
Также сначала пройдите страницу с инструкциями, прежде чем проверять код.
http://www.filehosting.org/file/details/471563/AccessDropboxUsingPHP-master.rar
Других решений пока нет …