首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将文件从node js传输到dropbox,无需基于浏览器的oauth身份验证

将文件从node js传输到dropbox,无需基于浏览器的oauth身份验证
EN

Stack Overflow用户
提问于 2013-05-02 02:09:06
回答 2查看 6.7K关注 0票数 17

我正在运行一台来自heroku的基于nodejs + express的应用程序接口服务器,并使用dropbox-js库。这是我想要做的:

dropbox用户点击特定的api端点,通过节点进程启动process.

  • Generate一些文本文件,并在server

  • Transfer上使用我自己的凭据(用户和
  1. 应用程序)将这些文件保存到我拥有的dropbox中。

永远不会出现随机用户需要这样做的情况。这是一个团队帐户,这是一个内部工具。

让我犯错的是dropbox想要打开一个浏览器窗口,并从我那里获得连接应用程序的许可。问题是,当进程在heroku实例上运行时,我显然不能单击该按钮。

有没有办法让我在node中完全授权访问app?

我觉得我可以使用一个phantomJS过程来点击按钮--但是它看起来太复杂了,如果可能的话,我想避免它。

这是我的验证码:

代码语言:javascript
复制
    // 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);
      });
    });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-02 18:47:59

我做了一些测试,但这是可能的。

首先,您需要通过浏览器进行身份验证,并保存Dropbox返回的token和token secret:

代码语言:javascript
复制
dbClient.authenticate(function(error, client) {
  console.log('connected...');
  console.log('token ', client.oauth.token);       // THE_TOKEN
  console.log('secret', client.oauth.tokenSecret); // THE_TOKEN_SECRET
  ...
});

一旦获得了令牌和密钥,就可以在Dropbox.Client构造函数中使用它们:

代码语言:javascript
复制
var dbClient = new Dropbox.Client({
  key         : DROPBOX_APP_KEY,
  secret      : DROPBOX_APP_SECRET,
  sandbox     : false,
  token       : THE_TOKEN,
  tokenSecret : THE_TOKEN_SECRET
});

在那之后,你就不再需要通过浏览器进行身份验证了(或者至少直到有人在没有令牌和密钥的情况下再次运行代码,这将使Dropbox生成一个新的令牌/密钥对并使旧的令牌/密钥对无效,或者应用程序凭证被吊销)。

票数 19
EN

Stack Overflow用户

发布于 2014-11-05 15:36:35

或者,您可以只使用隐式授权并获取oauth令牌。

代码语言:javascript
复制
        var client = new Dropbox.Client({
            key: "xxxxx",
            secret: "xxxxx",
            token:"asssdsadadsadasdasdasdasdaddadadadsdsa", //got from implicit grant
            sandbox:false
        });

不再需要访问浏览器的all.This行不再需要!

代码语言:javascript
复制
   client.authDriver(new Dropbox.AuthDriver.NodeServer(8191));
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16323806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档