17

heroku から nodejs + Express ベースの API サーバーを実行し、dropbox -jsライブラリを使用しています。これが私がやりたいことです:

  1. ユーザーが特定の API エンドポイントにヒットし、プロセスを開始します。
  2. ノードプロセスを介していくつかのテキストファイルを生成し、サーバーに保存します
  3. 自分の資格情報 (ユーザーとドロップボックス アプリ) を使用して、これらのファイルを私が所有するドロップボックスに転送します。

ランダムなユーザーがこれを行う必要があるケースは決してありません。これはチーム アカウントであり、これは内部ツールです。

私をつまずかせているのは、Dropbox がブラウザ ウィンドウを開いて、アプリに接続するための許可を得ようとしている点です。問題は、プロセスがherokuインスタンスで実行されているときに明らかにボタンをクリックできないことです。

完全にノードでアプリへのアクセスを許可する方法はありますか?

ボタンをクリックするためにphantomJSプロセスを使用できる可能性があるように感じますが、複雑すぎるようで、可能であれば避けたいと思います。

これが私の認証コードです:

    // Libraries
    var Dropbox         = require('dropbox');

    var DROPBOX_APP_KEY    = "key";
    var DROPBOX_APP_SECRET = "secret";

    var dbClient = new Dropbox.Client({
      key: DROPBOX_APP_KEY, secret: DROPBOX_APP_SECRET, sandbox: false
    });

    dbClient.authDriver(new Dropbox.Drivers.NodeServer(8191));

    dbClient.authenticate(function(error, client) {
      if (error) {
        console.log("Some shit happened trying to authenticate with dropbox");
        console.log(error);
        return;
      }


      client.writeFile("test.txt", "sometext", function (error, stat) {
        if (error) {
          console.log(error);
          return;
        }

        console.log("file saved!");
        console.log(stat);
      });
    });
4

2 に答える 2

9

または、暗黙の付与を使用して oauth トークンを取得することもできます。

        var client = new Dropbox.Client({
            key: "xxxxx",
            secret: "xxxxx",
            token:"asssdsadadsadasdasdasdasdaddadadadsdsa", //got from implicit grant
            sandbox:false
        });

ブラウザにアクセスする必要はまったくありません。この行はもう必要ありません。

   client.authDriver(new Dropbox.AuthDriver.NodeServer(8191));
于 2014-11-05T07:36:34.803 に答える