我正在尝试使用Dropbox SDK for Javascript,所以我尝试了一个Hello World!熟悉自己,但我收到错误401验证失败。
当我关闭弹出窗口时,我点击按钮并将其重定向到授权页面,但在我点击"允许"后,它会显示"损坏的内容错误"页。
这是我的代码,我是从教程页面获得的,以便对其进行测试:
<!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>
答案 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秘密(当你不应该这样做时)。
如果删除该行,您的应用程序是否有效?
(顺便说一句,我编辑了您发布的应用机密,但它们仍然可以在编辑历史记录中看到。我建议删除这些应用并创建新应用。)