我似乎没有管理使用dropbox api操作的文件副本.我可以成功授权我的客户端,下载和上传文件.复制操作需要使用POST方法,我认为这是我产生错误请求的地方.我正在定义OAuth身份验证的POST方法,并使用Indy TIdHTTP发布请求,但我总是收到错误代码403 - 权限被拒绝.
这是dropbox api描述:https://www.dropbox.com/developers/reference/api#fileops-copy
这是我的代码的一部分:
ParamStr := Format('root=%s&from_path=%s&to_path=%s', [Root, EncodeFileName(FromPath), EncodeFileName(ToPath)]);
URL := 'https://api.dropbox.com/1/fileops/copy' + '?' + ParamStr;
Consumer := TOAuthConsumer.Create(Key, Secret);
AToken := TOAuthToken.Create(fToken, fTokenSecret);
HMAC := TOAuthSignatureMethod_HMAC_SHA1.Create;
ARequest := TOAuthRequest.Create('');
try
ARequest.HTTPURL := URL;
ARequest.Method := 'POST';
ARequest := ARequest.FromConsumerAndToken(Consumer, AToken, '');
ARequest.Sign_Request(HMAC, Consumer, AToken);
Params := TStringList.Create;
try
Params.Text := ParamStr + '&' + ARequest.GetString;
HTTP.Post(URL, Params);
finally
Params.Free;
end;
Run Code Online (Sandbox Code Playgroud) 我正在构建一个应用程序来自动触发与用户共享的Dropbox文件的下载(共享文件/文件夹链接).这是直截了当地实现对Dropbox的链接文件,概述这里.
不幸的是,这对共享文件夹不起作用.任何人都有我的建议
目前我可以访问网址并进行屏幕抓取以尝试获取内容列表,但链接的Dropbox博客条目中描述的解决方案的优势在于不需要抓取,因此它更加可靠和高效.
如何使用Dropbox API将文件(图形,音频和视频文件)上传到Dropbox?我按照Dropbox SDK Android页面上的教程进行操作,可以使样本生效.但是现在我想要上传一个实际的File对象而不是String,而是在苦苦挣扎.
示例代码没有任何问题,看起来像这样:
String fileContents = "Hello World!";
ByteArrayInputStream inputStream = new ByteArrayInputStream(fileContents.getBytes());
try {
Entry newEntry = mDBApi.putFile("/testing_123456.txt", inputStream, fileContents.length(), null, null);
} catch (DropboxUnlinkedException e) {
Log.e("DbExampleLog", "User has unlinked.");
} catch (DropboxException e) {
Log.e("DbExampleLog", "Something went wrong while uploading.");
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试更改它并使用以下代码上传实际文件时:
File tmpFile = new File(fullPath, "IMG_2012-03-12_10-22-09_thumb.jpg");
// convert File to byte[]
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(tmpFile);
bos.close();
oos.close();
byte[] bytes = bos.toByteArray();
ByteArrayInputStream inputStream = …
Run Code Online (Sandbox Code Playgroud) 我想用laravel 5和dropbox API构建一个应用程序,我希望在你登陆主页时显示API允许/取消警告,而不是当你点击按钮时.我尝试了不同的方法,但我无法使它工作.
public function start(){
session(['user_id'=>1]);
$dKey = 'key';
$dSecret = 'secret';
$appName = 'app';
$appInfo = new Dropbox\AppInfo($dKey,$dSecret);
//store csrf token
$tokenStore = new Dropbox\ArrayEntryStore($_SESSION,'dropbox-auth-csrf-token');
//define auth details
$this->webAuth = new Dropbox\WebAuth($appInfo,$appName,'http://localhost:8000/dropbox/finish',$tokenStore);
$this->checkSession();
}
public function checkSession(){
$users = User::where('id','=',session('user_id'))->get();
if(isset($user[0]->dropbox_token)){
}
else{
$url = $this->webAuth->start();
//return Redirect::to($url);
//return Redirect::away($url);
//header('Location : '.$url);
}
}
Run Code Online (Sandbox Code Playgroud)
$ url中的链接存在且有效.
这些(最后3个评论方法)是我尝试的方法,包括返回重定向($ url),是否可以这样做或者我是否在浪费时间?请帮助我.
我正在尝试连接到安装了WAMP x64的Dropbox API.
这是我从Dropbox php API获得的Dropbox身份验证文件的例外
致命错误:未捕获异常'Exception',消息'Dropbox SDK使用64位整数,但看起来我们正在运行不支持64位整数的PHP版本(PHP_INT_MAX = 2147483647).库:C:\ Users\Albert\Desktop\www\test\dropbox-sdk\Dropbox\RequestUtil.php中的"C:\ Users\Albert\Desktop\www\test\dropbox -sdk\Dropbox\RequestUtil.php"'在第15行
它说,我检查了我的PHP版本
架构x64
我应该怎么做才能使我的Dropbox应用程序工作?非常感谢.
我正在从heroku运行一个基于nodejs + express的api服务器并使用dropbox-js库.这是我想做的事情:
当随机用户需要这样做时,永远不会出现这种情况.这是一个团队帐户,这是一个内部工具.
绊倒我的部分是dropbox想要打开浏览器窗口并获得我的许可以连接到应用程序.问题是,当进程在heroku实例上运行时,我显然无法单击该按钮.
有没有办法让我在节点中授权访问应用程序?
我觉得我可能会使用phantomJS进程点击按钮 - 但它看起来太复杂了,如果可能的话我想避免使用它.
这是我的验证码:
// Libraries
var Dropbox = require('dropbox');
var DROPBOX_APP_KEY = "key";
var DROPBOX_APP_SECRET = "secret";
var dbClient = new Dropbox.Client({
key: DROPBOX_APP_KEY, secret: DROPBOX_APP_SECRET, sandbox: false
});
dbClient.authDriver(new Dropbox.Drivers.NodeServer(8191));
dbClient.authenticate(function(error, client) {
if (error) {
console.log("Some shit happened trying to authenticate with dropbox");
console.log(error);
return;
}
client.writeFile("test.txt", "sometext", function (error, stat) {
if (error) {
console.log(error);
return;
}
console.log("file saved!");
console.log(stat);
});
});
Run Code Online (Sandbox Code Playgroud) 我需要通过cron(每小时)将文件保存(并覆盖)到我的Dropbox帐户.该文件需要存储在预定义的位置(与其他一些用户共享).
我已经看到了创建一个Dropbox App
,但创建自己的Dropbox文件夹的可能性.
还看了一下,Dropbox Saver
但对于浏览器而言似乎.
我在想(希望)超轻量级的东西,很长的路线CURL
,所以我不需要安装库.只需一个简单的sh
脚本就可以了.我只需要PUT文件(覆盖),不需要读取(GET)它.
是通过Dropbox 开发人员API文档,但有点丢失.
有人提示吗?
我正在尝试从GAE应用程序创建Dropbox.com文件夹中的文件.我已经完成了注册Dropbox应用程序的所有步骤,并在我的开发机器上本地安装了Dropbox本地的Python SDK.(请参阅dropbox.com API).当我在本地计算机上的Dropbox SDK中使用cli_client.py测试脚本访问dropbox时,它完全可以正常工作 - 可以'放'文件等.
我现在想开始在GAE环境中工作,所以事情变得有点棘手.一些帮助会很有用.
对于那些熟悉Dropbox API代码的人,到目前为止我遇到了以下问题:
问题1
rest.py Dropbox API模块使用pkg_resources来获取本地计算机安装的site-packages中安装的证书.我换了
TRUSTED_CERT_FILE = pkg_resources.resource_filename(__name__, 'trusted-certs.crt')
Run Code Online (Sandbox Code Playgroud)
同
TRUSTED_CERT_FILE = file('trusted-certs.crt')
Run Code Online (Sandbox Code Playgroud)
并将cert文件放在我的GAE应用程序目录中.也许这不太对劲; 请参阅下面的验证错误代码.
问题2
该session.py的Dropbox API模块使用OAuth的模块,所以我改变了包括对AppEngine上的OAuth.
但提出了一个例外,即GAE的oauth没有Dropbox session.py模块使用的OAuthConsumer方法.所以我下载了oauth 1.0并添加到我的应用程序中,现在导入这个而不是GAE oauth.
问题3
GAE ssl模块似乎没有CERT_REQUIRED属性.
这是一个常数,所以我改变了
self.cert_reqs = ssl.CERT_REQUIRED
Run Code Online (Sandbox Code Playgroud)
至
self.cert_reqs = 2
Run Code Online (Sandbox Code Playgroud)
这在调用时使用
ssl.wrap_socket(sock, cert_reqs=self.cert_reqs, ca_certs=self.ca_certs)
Run Code Online (Sandbox Code Playgroud)
授权错误
但我仍然无法连接到Dropbox:
Status: 401
Reason: Unauthorized
Body: {"error": "Authentication failed"}
Headers: [('date', 'Sun, 19 Feb 2012 15:11:12 GMT'), ('transfer-encoding', 'chunked'), ('connection', 'keep-alive'), ('content-type', 'application/json'), ('server', 'dbws')]
Run Code Online (Sandbox Code Playgroud) 我在主要护照回购中发现了一些问题,但是,我认为这主要与这个特定策略有关,因为我能够使用passport-google-oauth策略成功进行身份验证.
Error: failed to find request token in session
at Strategy.OAuthStrategy.authenticate (/home/glug/application/node_modules/passport-dropbox/node_modules/passport-oauth/lib/passport-oauth/strategies/oauth.js:124:54)
at attempt (/home/glug/application/node_modules/passport/lib/passport/middleware/authenticate.js:243:16)
at Passport.authenticate (/home/glug/application/node_modules/passport/lib/passport/middleware/authenticate.js:244:7)
at callbacks (/home/glug/application/node_modules/express/lib/router/index.js:161:37)
at param (/home/glug/application/node_modules/express/lib/router/index.js:135:11)
at pass (/home/glug/application/node_modules/express/lib/router/index.js:142:5)
at Router._dispatch (/home/glug/application/node_modules/express/lib/router/index.js:170:5)
at Object.router (/home/glug/application/node_modules/express/lib/router/index.js:33:10)
at Context.next (/home/glug/application/node_modules/express/node_modules/connect/lib/proto.js:190:15)
at Context.actions.pass (/home/glug/application/node_modules/passport/lib/passport/context/http/actions.js:77:8)
Run Code Online (Sandbox Code Playgroud)
我使用redis作为会话存储,但是,即使在消除了它之后,仍然会出现相同的错误消息.
var DropboxStrategy = require('passport-dropbox').Strategy;
app.configure(function(){
app.set('port', config.express.port);
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({
// store: new RedisStore({ client: redis}),
secret: config.express.secret
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
});
passport.serializeUser(function(user, done) {
// console.log('Serializing: ' + JSON.stringify(user));
done(null, user);
});
passport.deserializeUser(function(obj, done) { …
Run Code Online (Sandbox Code Playgroud) dropbox-api ×10
dropbox ×3
express ×2
node.js ×2
php ×2
android ×1
android-file ×1
bash ×1
curl ×1
delphi ×1
dropbox-php ×1
indy ×1
inputstream ×1
laravel-5 ×1
linux ×1
oauth ×1
passport.js ×1
python ×1
wamp ×1
wampserver ×1