我在QML应用中使用 dbox 库(来自github的资源)。在QML文件中,我使用以下代码导入dbox库:
import "./dbox-master/lib/dbox.js" as Dbox
然后我以这种方式使用它:
var app = Dbox.app({ "app_key": root.appKey, "app_secret": root.appSecret })
但是,在dbox.js
中有一系列require
语句,位于文件顶部:
define(['require', 'request', 'querystring', 'path'], function (require) {
var request = require('request');
var qs = require('querystring');
var path = require('path');
var helpers_ = require("./helpers")
// var request = require('request');
});
//var request = require("request")
//var qs = require("querystring")
//var path = require("path")
//require(['request'], function (foo) {
// console.log('request is loaded')
//});
exports.app = function(config){
var root = config.root || "sandbox"
var helpers = helpers_(config)
return {
root: root,
requesttoken: function(cb){
var signature = helpers.sign({})
var body = qs.stringify(signature)
var args = {
"method": "POST",
"headers": {
"content-type": "application/x-www-form-urlencoded",
"content-length": body.length
},
"url": "https://api.dropbox.com/1/oauth/request_token",
"body": body
}
return request(args, function(e, r, b){
var obj = qs.parse(b)
obj.authorize_url = "https://www.dropbox.com/1/oauth/authorize?oauth_token=" + obj.oauth_token
cb(e ? null : r.statusCode, obj)
})
},...
如您所见,我已更改代码以使dbox.js
正常工作但require
未定义。如何正确使用require.js
?
更新即可。
我发现,问题出在主机环境中。 QML全局空间是不变的。 Node.js
要求对象存在于空间(例如iself)并导入全局空间。有一个project on github粘合Node.js
和QML但尚未完成。我提出另一个解决方案:制作一个C ++插件来运行js中的脚本。该脚本在Node.js
环境中运行,以将Dropbox帐户信息传达给基于Quick的应用程序。
答案 0 :(得分:0)
使用Web API的最佳方法是什么?在这种情况下Dropbox
。
取决于。
由于我需要列出所有文件并下载文件,因此最好选择手动使用Dropbox
API。
我使用OAuth2
授权应用程序Token Flaw
,因为它很快。
WebView
是该应用。内置浏览器。将redirect_uri
设置为WebView url
属性值后,即表示授权已通过。随重定向返回access token
。
注意。强>
redirect_uri
必须等于应用中应用redirect_uri
中设置的AppConsole
。 Dropbox
帐户。
结果:我没有使用3d party
Dropbox JS
个库,手动发送请求要快得多。