4

dropbox apiを使用してファイルをアップロードしようとしていますが、次のコードは次のようなエラーを示しています。

bootstrap.php

// Register a simple autoload function
spl_autoload_register(function($class){
    $class = str_replace('\\', '/', $class);
    require_once('../' . $class . '.php');
});

// Set your consumer key, secret and callback URL
$key      = 'XXXXXXXXXXXXX';
$secret   = 'XXXXXXXXXXXXX';

// Check whether to use HTTPS and set the callback URL
$protocol = (!empty($_SERVER['HTTPS'])) ? 'https' : 'http';
$callback = $protocol . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

// Instantiate the required Dropbox objects
$encrypter = new \Dropbox\OAuth\Storage\Encrypter('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
$storage = new \Dropbox\OAuth\Storage\Session($encrypter);
$OAuth = new \Dropbox\OAuth\Consumer\Curl($key, $secret, $storage, $callback);
$dropbox = new \Dropbox\API($OAuth);

putFile.php

// Require the bootstrap
require_once('bootstrap.php');

// Create a temporary file and write some data to it
$tmp = tempnam('/tmp', 'dropbox');
$data = 'This file was uploaded using the Dropbox API!';
file_put_contents($tmp, $data);

// Upload the file with an alternative filename
$put = $dropbox->putFile($tmp, 'api_upload_test.txt');

// Unlink the temporary file
unlink($tmp);

// Dump the output
var_dump($put);

コード作成者:BenTheDesigner-Dropbox

エラー: 致命的なエラー:キャッチされない例外'Dropbox \ Exception'とメッセージ'アプリフォルダー(サンドボックス)へのアクセス試行が失敗しました。このアプリはアプリフォルダーを持つように構成されていないためです。代わりに、アクセスタイプを「dropbox」にする必要がありますか?(ステータスコード:403)'103行目のC:\ wamp \ www \ BenTheDesigner-Dropbox-b49576c \ Dropbox \ OAuth \ Consumer \ Curl.php

(!)Dropbox \ Exception:このアプリがアプリフォルダーを持つように構成されていないため、アプリフォルダー(サンドボックス)へのアクセスに失敗しました。代わりに、アクセスタイプを「dropbox」にする必要がありますか?(ステータスコード:403)103行目のC:\ wamp \ www \ BenTheDesigner-Dropbox-b49576c \ Dropbox \ OAuth \ Consumer \Curl.php

どうしたらいいのかわからない?

4

2 に答える 2

7

現在DropboxAPIアプリを登録できる「アクセスタイプ」には、「アプリフォルダー」(サンドボックス)と「フルドロップボックス」(ドロップボックス)の2種類があります。アプリを登録するときにこの選択を行います。その後、アプリのオプションページでどのタイプを使用しているかを確認できます。ここにアプリのオプションページへのリンクがあります: https ://www.dropbox.com/developers/apps

コードでは、正しいアクセスタイプを反映するように、「ルート」(通常はキーと同じ場所に設定)を設定する必要があります。

このエラーは、アプリが完全なDropboxアクセス用に登録されているが、代わりにコードにアプリフォルダーを設定していることを意味します。

これを修正するには、ルートが設定されている場所を見つけて、「dropbox」に切り替えます。(または、アプリフォルダーアクセスを使用する場合は、新しいアプリをアプリフォルダーアクセスに登録し、それらのキーを使用します。)

使用しているライブラリには、使用する必要のあるAPIクラスに関数「setRoot」があるようです: https ://github.com/BenTheDesigner/Dropbox/blob/master/Dropbox/API.php

于 2012-04-19T15:38:43.650 に答える
3

この行のAPI.phpファイルの変更

public function __construct(OAuth\Consumer\ConsumerAbstract $OAuth, $root = 'dropbox')
    {
        $this->OAuth = $OAuth;
        $this->setRoot($root);
    }

urコードに$root='dropbox' はサンドボックスがあります..サンドボックスを削除してドロップボックスを記述します

于 2012-05-17T04:52:30.670 に答える