标签: dropbox-api

iPhone DropBox API:如何加载文件?

关于dropBox集成到iPhone应用程序的一个非常基本的问题.

我按照DropBoxSDK的设置,一切正常.我可以登录我的帐户并将其链接起来.所以我正确地设置了一切.

现在我想用它来简单地从dropBox加载一个文件并再次保存.考虑到你只想同步一个文件(为简单起见),称为'example.txt',它位于我的DropBox的'Example'文件夹中.同样的'example.txt'本地保存在我的应用程序的Documents目录中的iPhone上.

dropBox自述文件隐约地提出了以下代码,我发现这些代码非常神秘,无法真正看到如何加载或保存文件:

2. Make an request on the rest client:

   [[self restClient] loadMetadata:@"/"];

3. Implement the DBRestClientDelegate methods needed to get the results of the
   particular call you made:

   - (void)restClient:(DBRestClient*)client 
       loadedMetadata:(DBMetadata*)metadata {

       NSLog(@"Loaded metadata!");
   }

   - (void)restClient:(DBRestClient*)client 
       metadataUnchangedAtPath:(NSString*)path {

       NSLog(@"Metadata unchanged!");
   }

   - (void)restClient:(DBRestClient*)client 
       loadMetadataFailedWithError:(NSError*)error {

       NSLog(@"Error loading metadata: %@", error);
   }
Run Code Online (Sandbox Code Playgroud)

所以我(希望)简单的问题是我如何能够:

  • 检查我的保管箱中是否有示例文件夹
  • 如果没有,请创建一个并将example.txt从app文档保存到此示例文件夹中
  • 加载example.txt
  • 程序退出后:将example.txt保存到DropBox

我无法在网站上的DropBox文档中找到这些相当基本步骤的答案.他们提供的示例我发现太令人困惑了...特别是因为它只是关于加载文件而不是我可以看到的保存它们.

如果对此有任何帮助或建议,我将不胜感激.

iphone cocoa-touch objective-c dropbox dropbox-api

7
推荐指数
1
解决办法
7851
查看次数

使用Dropbox Web界面删除包含30,000个文件的文件夹

我的Dropbox中有一个包含30,000个文件的文件夹,我无法使用Web界面删除.看来我必须下载所有30,000个文件才能告诉dropbox我真的不想要它们.

出现此错误是因为最初拥有文件的计算机已经消失,我使用选择性同步来避免将30,000个文件下载到我的所有其他计算机.

任何人都可以想到一个聪明的方法来解决这个问题吗?只是查看文件夹通常会导致Web界面崩溃.

dropbox dropbox-api

7
推荐指数
1
解决办法
7475
查看次数

从Google云端硬盘上传到Dropbox

作为测试案例,我正在尝试使用Google Scripts将文件从Google云端硬盘复制到Dropbox

function pushBuild() {
  // Setup OAuthServiceConfig
  var oAuthConfig = UrlFetchApp.addOAuthService("dropbox");
  oAuthConfig.setAccessTokenUrl("https://api.dropbox.com/1/oauth/access_token");
  oAuthConfig.setRequestTokenUrl("https://api.dropbox.com/1/oauth/request_token");
  oAuthConfig.setAuthorizationUrl("https://www.dropbox.com/1/oauth/authorize");
  oAuthConfig.setConsumerKey(ScriptProperties.getProperty("dropboxKey"));
  oAuthConfig.setConsumerSecret(ScriptProperties.getProperty("dropboxSecret"));

  var fileName = "blah.zip"
  var folderName = "upload_dir"

  var docs = DocsList.getFolder(folderName).find(fileName);
  for(n=0;n<docs.length;++n){
    if(docs[n].getName() == fileName){
      var ID = docs[n].getId();
      var options = {
        "oAuthServiceName" : "dropbox",
        "oAuthUseToken" : "always",
        "method" : "put",
        "payload" : docs[n].getBlob().getBytes(),
        "contentType" : "application/zip"        
    };

  var response = UrlFetchApp.fetch("https://api-content.dropbox.com/1/files_put/sandbox/upload_dir/" + fileName, options);

  Logger.log(response);
  }
 }

}
Run Code Online (Sandbox Code Playgroud)

Dropbox中的应用程序授权请求出现,它告诉我我已成功授权我的应用程序,但当我检查时,该应用程序不在"我的应用程序"列表中,该文件尚未上载且没有日志中的条目.GD和DB上都存在目录"upload_dir".我尝试使用"App Folder"和"Full Dropbox"应用程序类型的相同代码,但得到相同的结果.

此外,再次运行脚本再次触发授权页面,类似于

这个

要显示,单击"允许",然后显示成功屏幕,但应用程序未列在"我的应用程序"中.再次运行脚本会重复该过程.

谁能指出我做错了什么?

更新

所以,我现在尝试使用单独的api调用来实现它,但仍然没有取得任何成功.

function testOAuth() {

  var …
Run Code Online (Sandbox Code Playgroud)

dropbox google-apps-script dropbox-api

7
推荐指数
1
解决办法
2656
查看次数

使用dropboxjs用oauth验证客户端2.服务器怎么样?

我是Oauth和服务器端的新手,所以请耐心等待我.

我有一个Web应用程序,使用dropbox-js对用户进行身份验证.一切都很简单.该应用程序使用dropbox-js' client.authenticate功能,如果用户通过身份验证,应用程序将自动重定向到初始页面,执行身份验证回调.从那一刻起,我知道我很高兴使用Dropbox进行身份验证,我可以使用应用程序的Dropbox目录.

我有一个目前什么也没做的公共node.js服务器.我想做的是:

  • 一旦客户端通过身份验证,请调用我的服务器并告诉它用户已通过身份验证
  • 如果服务器数据库上不存在该用户,则为其创建用户数据库的条目(我不需要详细说明来执行此操作).如果存在,则发回用户的关联数据.

我怎样才能以安全的方式做到这一点?我的意思是,服务器如何告诉用户是有效的Dropbox用户?服务器是否应该使用用户凭据向Dropbox进行身份验证?这些情况下的工作流程是什么?

oauth dropbox node.js oauth-2.0 dropbox-api

6
推荐指数
1
解决办法
2081
查看次数

访问dropbox api没有客户端身份验证?

我正在尝试使用文件的自定义表示(徽标字体等)创建一个平滑的解决方案来共享文件.

我的理想是将文件放在一个dropbox文件夹中,然后在一个单独的服务器上有一个网页,通过javascript访问这些文件并显示链接到实际文件的列表.

需求是最终用户不必使用dropbox acocunt进行身份验证以访问文件.我宁愿使用公共文件夹或使用其他帐户的文件.

有没有办法维护auth-session服务器端,像永久会话ID或类似的东西?

api oauth dropbox dropbox-api dropbox-php

6
推荐指数
1
解决办法
2502
查看次数

使用proguard构建Gradle:java.lang.IncompatibleClassChangeError和java.lang.NoSuchMethodError

我最近将项目从Eclipse/Ant迁移到Android Studio/Gradle.我能够在启用proguard的情况下成功构建项目的签名发布版本.但是,在测试发布版本时,我遇到了某些库项目和jar(在构建调试版本时工作正常)的崩溃.

例如,当尝试将文件上传到Dropbox(jar依赖项)时,我收到以下错误:

java.lang.IncompatibleClassChangeError: interface not implemented
   at com.dropbox.client2.session.AbstractSession.sign(SourceFile:238)
   at com.dropbox.client2.DropboxAPI.putFileRequest(SourceFile:2199)
   at com.dropbox.client2.DropboxAPI.putFileOverwriteRequest(SourceFile:1571)
   at com.dropbox.client2.DropboxAPI.putFileOverwrite(SourceFile:1537)
Run Code Online (Sandbox Code Playgroud)

此外,当尝试登录Box(库项目依赖项)时,我收到以下错误:

java.lang.NoSuchMethodError: org.apache.http.conn.params.ConnManagerParams.setMaxTotalConnections
   at com.box.restclientv2.BoxBasicRestClient.()
   at com.box.boxjavalibv2.BoxRESTClient.()
   at com.box.boxjavalibv2.BoxClient.createRestClient()
   at com.box.boxjavalibv2.BoxClient.()
   at com.box.boxandroidlibv2.BoxAndroidClient.(SourceFile:49)
   at com.box.boxandroidlibv2.activities.OAuthActivity.startOAuth(SourceFile:71)
   at com.box.boxandroidlibv2.activities.OAuthActivity.onCreate(SourceFile:52)
Run Code Online (Sandbox Code Playgroud)

我有其他罐子和图书馆项目工作得很好......

同样,在构建gradle调试版本时没有任何问题(没有proguard).我还能够创建一个发布版本,使用ant启用proguard,没有任何问题(能够登录Dropbox和Box).

有任何想法吗?

android proguard dropbox-api box-api android-gradle-plugin

6
推荐指数
1
解决办法
1584
查看次数

如何使用Meteor.js对Dropbox API进行CURL调用

我是Meteor.js的新手,想让我的网络应用程序与Dropbox Core API一起使用.我无法使用Meteor.js中的HTTP包进行API调用

如何在Meteor中拨打电话,类似于下面的Curl电话:

curl https://api.dropbox.com/1/account/info -H "Authorization: Bearer <access token>"
Run Code Online (Sandbox Code Playgroud)

我希望得到目录中的文件列表,但是现在我仍然坚持使用了Authentical Token.

dropbox-api meteor

6
推荐指数
1
解决办法
2755
查看次数

createReadStream不工作/大文件速度极慢

我使用DropBox API上传文件.要将文件上传到Dropbox,我将执行以下步骤:

  1. 首先将文件上传form到服务器上的本地目录.
  2. 使用从本地目录读取文件 fs.createReadStream
  3. 通过Dropbox API将文件发送到Dropbox.

问题:

由于某种原因fs.createReadStream,在阅读和上传大文件时需要绝对年龄.现在我要上传的文件只有12MB,这不是一个大文件,上传/处理12MB文件大约需要18分钟.

我不知道问题出在哪里createReadStream或者dropbox api代码.

它适用于大小不等的文件kb.

我的代码:

let options = {
    method: 'POST',
    uri: 'https://content.dropboxapi.com/2/files/upload',
    headers: {
        'Authorization': 'Bearer TOKEN HERE',
        'Dropbox-API-Arg': "{\"path\": \"/test/" + req.file.originalname + "\",\"mode\": \"overwrite\",\"autorename\": true,\"mute\": false}",
        'Content-Type': 'application/octet-stream'
    }, 

      // I think the issue is here.
      body: fs.createReadStream(`uploads/${req.file.originalname}`)
};

 rp(options)
    .then(() => {
        return _deleteLocalFile(req.file.originalname)
    })
    .then(() => {
        return _generateShareableLink(req.file.originalname)
    })
    .then((shareableLink) => {
        sendJsonResponse(res, 200, …
Run Code Online (Sandbox Code Playgroud)

javascript node.js express dropbox-api

6
推荐指数
1
解决办法
806
查看次数

NestJS 和 PassportJS 没有刷新令牌

我通过两种不同的策略在我的 NestJS 应用程序中实现了 Google 和 Dropbox 身份验证。

问题是我从来没有得到refresh_token 和access_token。我已经尝试从我的 Google/Dropbox 帐户中已授予的应用程序中删除该应用程序,但没有成功。

import { Injectable } from '@nestjs/common';
import { PassportStrategy } from '@nestjs/passport';
import { Strategy } from 'passport-google-oauth2';
import { AuthService } from './auth.service';
import { OauthUser } from './oauth-user.entity';
import { UserService } from '../user/user.service';
import { ConfigService } from '../config/config.service';
import { CloudProvider } from '../shared/enums/cloud-service.enum';

@Injectable()
export class GoogleStrategy extends PassportStrategy(Strategy, 'google') {

  constructor(private readonly authService: AuthService,
              private readonly userService: UserService,
              private readonly configService: ConfigService) { …
Run Code Online (Sandbox Code Playgroud)

oauth dropbox-api google-oauth passport.js nestjs

6
推荐指数
1
解决办法
2576
查看次数

内部有嵌套文件夹的 Zip 存档无法使用 yauzl 解压

我正在编写一个软件,其中包括使用 Dropbox API 下载 zip 存档,然后使用 yauzl 解压该存档。

从数据库存储和下载文件的方式通常会产生嵌套文件夹,我需要保持这种方式。

然而,我的 yauzl 实现无法在保留嵌套文件夹结构的同时解压缩,如果存档中有嵌套文件夹,它根本不会解压缩。

这是我的解压函数,它是默认的 yauzl 示例,最后添加了本地文件写入。

const unzip = () => {
    let zipPath = "pathToFile.zip"
    let extractPath = "pathToExtractLocation"

        yauzl.open(zipPath, {lazyEntries: true}, function(err, zipfile) {
            if (err) throw err;
            zipfile.readEntry();
            zipfile.on("entry", function(entry) {
            if (/\/$/.test(entry.fileName)) {
                // Directory file names end with '/'.
                // Note that entries for directories themselves are optional.
                // An entry's fileName implicitly requires its parent directories to exist.
                zipfile.readEntry();
            } else {
                // file entry …
Run Code Online (Sandbox Code Playgroud)

javascript unzip dropbox-api yauzl

6
推荐指数
1
解决办法
797
查看次数