关于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)
所以我(希望)简单的问题是我如何能够:
我无法在网站上的DropBox文档中找到这些相当基本步骤的答案.他们提供的示例我发现太令人困惑了...特别是因为它只是关于加载文件而不是我可以看到的保存它们.
如果对此有任何帮助或建议,我将不胜感激.
我的Dropbox中有一个包含30,000个文件的文件夹,我无法使用Web界面删除.看来我必须下载所有30,000个文件才能告诉dropbox我真的不想要它们.
出现此错误是因为最初拥有文件的计算机已经消失,我使用选择性同步来避免将30,000个文件下载到我的所有其他计算机.
任何人都可以想到一个聪明的方法来解决这个问题吗?只是查看文件夹通常会导致Web界面崩溃.
作为测试案例,我正在尝试使用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) 我是Oauth和服务器端的新手,所以请耐心等待我.
我有一个Web应用程序,使用dropbox-js对用户进行身份验证.一切都很简单.该应用程序使用dropbox-js' client.authenticate功能,如果用户通过身份验证,应用程序将自动重定向到初始页面,执行身份验证回调.从那一刻起,我知道我很高兴使用Dropbox进行身份验证,我可以使用应用程序的Dropbox目录.
我有一个目前什么也没做的公共node.js服务器.我想做的是:
我怎样才能以安全的方式做到这一点?我的意思是,服务器如何告诉用户是有效的Dropbox用户?服务器是否应该使用用户凭据向Dropbox进行身份验证?这些情况下的工作流程是什么?
我正在尝试使用文件的自定义表示(徽标字体等)创建一个平滑的解决方案来共享文件.
我的理想是将文件放在一个dropbox文件夹中,然后在一个单独的服务器上有一个网页,通过javascript访问这些文件并显示链接到实际文件的列表.
需求是最终用户不必使用dropbox acocunt进行身份验证以访问文件.我宁愿使用公共文件夹或使用其他帐户的文件.
有没有办法维护auth-session服务器端,像永久会话ID或类似的东西?
我最近将项目从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).
有任何想法吗?
我是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上传文件.要将文件上传到Dropbox,我将执行以下步骤:
form到服务器上的本地目录.fs.createReadStream问题:
由于某种原因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) 我通过两种不同的策略在我的 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) 我正在编写一个软件,其中包括使用 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) dropbox-api ×10
dropbox ×5
oauth ×3
javascript ×2
node.js ×2
android ×1
api ×1
box-api ×1
cocoa-touch ×1
dropbox-php ×1
express ×1
google-oauth ×1
iphone ×1
meteor ×1
nestjs ×1
oauth-2.0 ×1
objective-c ×1
passport.js ×1
proguard ×1
unzip ×1
yauzl ×1