【问题标题】:Download File from Dropbox in Node.js cli在 Node.js cli 中从 Dropbox 下载文件
【发布时间】:2015-12-10 21:04:57
【问题描述】:

我正在编写一个 node.js cli 来学习 HTTP 请求。我想下载一个文件并将其保存到本地文件夹。我遇到的问题是从 Dropbox 获取文件。我已经阅读他们的 API 大约一天了,但仍然不明白如何浏览它。这是我的代码:

var https = require('https'),
    clc = require('cli-color'),
    options = {
        protocol: 'https:',
        hostname: 'www.dropbox.com',
        path: '/1/oauth2/authorize?client_id=<<my-id>>response_type=code',
        method: 'GET'
    },
    token;

var req = https.get(options, function (res) {
    if (res) {
        console.log(clc.green('success'));
    }

    res.on('data', function (data) {
        console.log(data);
    })
});

我正在关注来自 Dropbox API 的 code OAuth 授权流程。当我运行index.js 文件时,它返回的数据是这样的:

<Buffer 6f 6d 70 6f 6e 65 6e 74 73 5f 5f 69 6e 70 75 74 2e 54 65 78 74 49 6e 70 75 74 2c 20 5b 5d 29 3b 20 7d 28 6d 6f 64 75 6c 65 73 5f 5f 63 6c 65 61 6e 5f ... >

这是授权码吗?如果没有,我该怎么做才能得到它并存储它?

【问题讨论】:

    标签: javascript node.js http https


    【解决方案1】:

    data 是一个Buffer,包含一些原始响应数据。您可以连接每个 data 直到响应完成。我应该指出,响应似乎是 javascript(如果您将 Buffer 转换为字符串或将十六进制字节转换为字符串),因此您可以尝试以下操作:

    https.get(options, function(res) {
      var buf = '';
      res.on('data', function(data) {
        buf += data;
      }).on('end', function() {
        console.log('Response:');
        console.log(buf);
      });
    });
    

    另外,protocol: 'https:', 不是必需的,也未被https 模块使用。

    【讨论】:

    • 谢谢!将它们连接起来会产生一堆编译成登录页面的 HTML。我从这里做什么?有没有办法从这里插入登录凭据和/或获取访问代码?
    • 抱歉,我对他们的网络服务不够熟悉,无法回答这个问题。至于提出请求和缓冲整个响应,我可以回答。
    • 谢谢,帮了大忙。
    猜你喜欢
    • 2020-10-25
    • 1970-01-01
    • 2016-06-30
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多