Dropbox PHP читать содержимое файла

Я создаю простое приложение Dropbox, в котором после аутентификации пользователя оно должно запрашивать некоторую информацию, читать содержимое текстового файла. Используйте ajax для всего после аутентификации.
до сих пор мне удалось пройти проверку подлинности, но когда я отправляю информацию на сервер с помощью ajax, я не могу открыть файл.
У меня есть следующий серверный скрипт:

<?php
require_once "../app/start.php";

require_once __DIR__.'/../app/config.php';

$regex = $_POST['regex'];
(...)


$accessToken = $_SESSION['accessToken'] ;
$client = new Dropbox\Client($accessToken, $GLOBALS['app_name'], 'UTF-8');
var_dump($client);
// Read File todo.txt

$filename = __DIR__.'/todo/todo.txt';
$f = fopen($filename, "w+b") or die("Unable to open file!");
$fileMetadata = $client->getFile('/todo/todo.txt', $f);
var_dump($fileMetadata);

и когда я выполняю его, результат будет следующим:

object(Dropbox\Client)#8 (6) {
["accessToken":"Dropbox\Client":private]=>
string(64) "xxxxxxxxxxxxxxxxxxxxxxxxx"["clientIdentifier":"Dropbox\Client":private]=>
string(13) "oauth-php/1.0"["userLocale":"Dropbox\Client":private]=>
string(5) "UTF-8"["apiHost":"Dropbox\Client":private]=>
string(15) "api.dropbox.com"["contentHost":"Dropbox\Client":private]=>
string(23) "api-content.dropbox.com"["host"]=>
object(Dropbox\Host)#5 (3) {
["api":"Dropbox\Host":private]=>
string(15) "api.dropbox.com"["content":"Dropbox\Host":private]=>
string(23) "api-content.dropbox.com"["web":"Dropbox\Host":private]=>
string(15) "www.dropbox.com"}
}
NULL

Где последний NULL относится к содержанию $fileMetadata, Почему пусто?

сеть start.php являются объектами Dropbox.

<?php
session_start();
require_once __DIR__.'/../vendor/autoload.php';
$key = "XCV...";
$secret = "DFG...";
$GLOBALS['app_name'] = "oauth-php/1.0";
$GLOBALS['redirectURI'] = "https://oauth.dev/dropbox_finish.php";
$GLOBALS['HomeURI'] = "https://oauth.dev";

$appInfo = new Dropbox\AppInfo($key, $secret);
$csrfTokenStore = new Dropbox\ArrayEntryStore($_SESSION, 'dropbox-auth-csrf-token');
$webAuth = new Dropbox\WebAuth($appInfo, $GLOBALS['app_name'], $GLOBALS['redirectURI'], $csrfTokenStore);

Редактировать: в локальных файлах у меня есть каталог под названием webгде исполняемые файлы. есть также и папка (внутри web) называется todo и файл todo.txt это внутри. __DIR__ относится к внутри web каталог, который я упомянул.

В Dropbox у меня есть директория todo с todo.txt внутри.

Edit2: добавив остальную часть кода.
index.php содержит:

<?php
include_once __DIR__.'/../app/start.php';
include_once __DIR__.'/../app/dropbox_auth.php';

затем dropbox_auth.php имеет следующий код:

$authURL = $webAuth->start();
header("Location: $authURL");

и наконец dropbox_finish.php

<?php
//session_start();
require_once "../app/start.php";

try {
list($accessToken, $userId, $urlState) = $webAuth->finish($_GET);
assert($urlState === null);  // Since we didn't pass anything in start()
}
catch (Dropbox\WebAuthException_BadRequest $ex) {
error_log("/dropbox-auth-finish: bad request: " . $ex->getMessage());
// Respond with an HTTP 400 and display error page...
}
//review
catch (Dropbox\WebAuthException_BadState $ex) {
// Auth session expired.  Restart the auth process.
header('Location: '.$GLOBALS['HomeURI']);
}
catch (Dropbox\WebAuthException_Csrf $ex) {
error_log("/dropbox-auth-finish: CSRF mismatch: " . $ex->getMessage());
// Respond with HTTP 403 and display error page...
}
catch (Dropbox\WebAuthException_NotApproved $ex) {
error_log("/dropbox-auth-finish: not approved: " . $ex->getMessage());
}
catch (Dropbox\WebAuthException_Provider $ex) {
error_log("/dropbox-auth-finish: error redirect from Dropbox: " . $ex->getMessage());
}
catch (Dropbox\Exception $ex) {
error_log("/dropbox-auth-finish: error communicating with Dropbox API: " . $ex->getMessage());
}

$client = new Dropbox\Client($accessToken, $GLOBALS['app_name'], 'UTF-8');
$_SESSION['accessToken'] = $accessToken;

$_SESSION['client_object'] = $client;

{... here I load an HTML form that uses AJAX send to `insert.php`}

0

Решение

Извините, я не могу написать комментарий прямо сейчас.

Попробуйте получить список папок / файлов, вызвав $ client-> getMetadataWithChildren (‘/ todo /’) и проверьте, является ли $ f действительным FilePointerRessource 🙂

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector