1

私は Dropbox OAuth に DropNet を使用していますが、大きな問題が 1 つあります。アクセス トークン キーを保存できず、それらを保存する意味がない秘密の原因です。ここでは、保存メカニズムは問題ではなく、重要な問題でもありません。問題は次のとおりです。

private void dropboxUpload()
{
    DropNetClient _Dclient = new DropNetClient("xxxxxxxxxxxxxxx", "yyyyyyyyyyyyyyy");
    _Dclient.UseSandbox = true;
    if (!dropboxLoggedIn)
    {
            _Dclient.GetToken();
            string url = _Dclient.BuildAuthorizeUrl();
            Process.Start(url);
            if (MessageBox.Show("Click OK after you have allowed Sizester to create and access a sub-folder called Sizester in a folder called Apps in your Dropbox account.", "Sizester access request", MessageBoxButtons.OKCancel) != System.Windows.Forms.DialogResult.OK)
            {
                return;
            }
        }
        try
        {
            if (!dropboxLoggedIn)
            {
                _Dclient.GetAccessToken();
                dropboxAsecret = _Dclient.UserLogin.Secret;
                dropboxAtoken = _Dclient.UserLogin.Token;
            }
            else
            {
                _Dclient.UserLogin.Token = dropboxAtoken;
                _Dclient.UserLogin.Secret = dropboxAsecret;
            }
            dropboxLoggedIn = true;
            //...
            _Dclient.UploadFile("/", fileE, FileToByteArray(newFilePath));
            MessageBox.Show("Successfully uploaded to Dropbox.", "Uploaded to Dropbox");
        }
        catch (Exception dropboxEx)
        {
            MessageBox.Show("Error: " + dropboxEx.Message);
        }
    }

ここでの問題は、最初はアップロードできますが、2 回目はアップロードできません。dropboxLoggedIn は true で、アクセス トークン キーとシークレットは問題なく保存されていますが、ファイルはアップロードされませんが、奇妙なことに返されません。エラーまたは例外。同じことが起こった場合に GetToken を移動すると。どこか間違っていることはわかっていますが、どこに行くのかわかりません。ファイルパスなどのコードの一部をストライプ化し、無関係なファイルを取得しました。Twitterでも同じことをしましたが、問題なく動作します。何か案は?

4

3 に答える 3

1

このリンクはその問題を解決するのに役立ちます: http://forums.dropbox.com/topic.php?id=61115&replies=6

DropNetClient _Dclient基本的に、アップロード ファイル メソッドからインスタンスを初期化する必要があります。アクセス トークンを取得したら、セッションまたは構成ファイルに保持する必要があります。ファイルをアップロードするたびに行う必要はありません。

于 2012-05-31T12:50:39.933 に答える
1

わかりました、問題はオブジェクトの初期化にありました-そうする場合:

DropNetClient _Dclient = new DropNetClient("xxxxxxxxxxxxxxx", "yyyyyyyyyyyyyyy");
_Dclient.UseSandbox = true;
_Dclient.UserLogin.Token = "zzzzzzzzzzzzzzz";
_Dclient.UserLogin.Secret = "wwwwwwwwwwwwww";

これは機能しません。代わりに、次のように初期化する必要があります。

DropNetClient _Dclient = new DropNetClient("xxxxxxxxxxxxxxx", "yyyyyyyyyyyyyyy","zzzzzzzzzzzzzzz","wwwwwwwwwwwwww");
_Dclient.UseSandbox = true;

ドキュメントやフォーラムのどこで最初のコード サンプルを見つけたのかわかりませんが、間違っています。使用すると、エラーや例外は発生しませんが、Dropbox ファイルのアップロードや操作は行われません。2番目のものを使用すると、すべてが機能します。

于 2012-06-04T22:12:25.580 に答える
1

その行の外観から 3 はあなたを台無しにしています:if (!dropboxLoggedIn)

したがって、ユーザーがログインしていない場合にのみ続行しますが、2回目の試行では、それが真実であるべきだと言って、アップロードコードをすべてスキップします.

于 2012-06-03T22:14:19.730 に答える