JavaScript Dropbox SDK中的错误401

时间:2014-04-28 23:08:33

标签: javascript authentication dropbox dropbox-api

我正在尝试使用Dropbox SDK for Javascript,所以我尝试了一个Hello World!熟悉自己,但我收到错误401验证失败。

Printscreen of the error I am getting

当我关闭弹出窗口时,我点击按钮并将其重定向到授权页面,但在我点击"允许"后,它会显示"损坏的内容错误"页。

这是我的代码,我是从教程页面获得的,以便对其进行测试:

<!doctype html>
<html>
<head>
    <script src="https://www.dropbox.com/static/api/dropbox-datastores-1.0-latest.js"></script>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <center>
        <button id="writeButton">Click to create <code>hello.txt</code> in Dropbox.</button>
    </center>`

    <script>
        var client = new Dropbox.Client({
            key: KEY// //APP KEY
            secret: "<REDACTED>"//"<REDACTED>"          //APP SECRET
        });

        function doHelloWorld() {
            client.writeFile('hello.txt', 'Hello, World!', function (error) {
                if (error) {
                    alert('Error: ' + error);
                } else {
                    alert('File written successfully!');
                }
            });
        }

        // Try to complete OAuth flow.
        client.authenticate({ interactive: false }, function (error) {
            if (error) {
                alert('Error: ' + error);
            } else {
                doHelloWorld();
            }
        });

        document.getElementById('writeButton').onclick = function () {
            client.authenticate(function (error, client) {
                if (error) {
                    alert('Error: ' + error);
                } else {
                    doHelloWorld();
                }
            });
        }
    </script>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

修改

看起来我在Dropbox开发博客上发布的代码不起作用(现在?)。您需要手动检查客户端是否经过身份验证,因为无论如何都会调用来自client.authenticate的回调。

我会更新博文。固定代码应如下所示:

// Try to complete OAuth flow.
client.authenticate({ interactive: false }, function (error) {
    if (error) {
        alert('Error: ' + error);
    } else if (client.isAuthenticated()) { // <-- this line changed
        doHelloWorld();
    }
});

原始(错误)回答

乍一看,我可以在你的代码和我的代码(https://www.dropbox.com/developers/blog/71/writing-a-file-with-the-dropbox-javascript-sdk)之间发现的唯一区别是你指定了一个app秘密(当你不应该这样做时)。

如果删除该行,您的应用程序是否有效?

(顺便说一句,我编辑了您发布的应用机密,但它们仍然可以在编辑历史记录中看到。我建议删除这些应用并创建新应用。)