0

我已经使用 dropbox-js 在本地机器上成功实现了 dropbox 登录。

使用以下函数执行身份验证:

router.get('/dropbox', isAuthenticated, function(req, res, next) {
    var isLoggedIn = !!req.user;
    var dropboxClient = req.app.get('dropboxClient');


    dropboxClient.authenticate(function(error, client) {
        if (error) {

            console.log(error);
        }
        dropboxClient.readdir("/", function(error, entries) {
            if (error) {
                console.log(error);  // Something went wrong.
                return 0;
            }
            console.log(entries);
            var folders = getFolders(entries);
            console.log("Your Dropbox contains " + folders.join(", "));
            res.render('settings', { title: 'Express', loggedIn: isLoggedIn, folders: folders });
        });
    });
});

dropboxClient 在 app.js 中定义如下:

var dropboxClient = new Dropbox.Client({
  key: dropboxConfig.dropbox.app_key,
  secret: dropboxConfig.dropbox.app_secret
});
dropboxClient.authDriver(new Dropbox.AuthDriver.NodeServer(8191));

并且在 Dropbox 应用程序控制台中定义的 OAuth 2 重定向 URI 如下:

http://localhost:8912/oauth_callback

如前所述,当应用程序在本地运行时,一切正常,但是当我在云平台上传输它时,我得到响应 502(网关错误)。

我尝试添加 OAuth2 重定向 URImyapp.evennode.com:8912/oauth_callback

但它不工作。有没有人成功地使用 dropbox-js 在任何云平台(heroku、evennode...)上实现了 dropbox 身份验证?

我将不胜感激任何帮助。

4

1 回答 1

-1

Dropbox.AuthDriver.NodeServer用于测试目的...它在 localhost 上侦听并在本地计算机上打开浏览器(在其他地方部署时肯定不会工作)。

如果您尝试在浏览器中进行身份验证,请参阅https://blogs.dropbox.com/developers/2013/12/writing-a-file-with-the-dropbox-javascript-sdk/了解使用dropbox.js.

如果您需要在 node.js 中使用服务器端流程,dropbox.js则不会有太大帮助。有关简单示例,请参阅https://github.com/smarx/othw/tree/master/Node.js

于 2015-07-17T17:17:35.253 回答