核心API上的自动loginDropbox帐户无需login提示

我是新来的iOs开发,我正在创build一个使用我自己的Dropbox帐户的应用程序。 我想我的应用程序自动login到我的帐户,以便能够修改和添加我的应用程序的文件夹中的文件。 该文件说,我应该打电话: [[DBSession sharedSession]linkFromController:viewController]; 能够login。 但我不想显示login提示给用户,因为我只希望它自动login到我的Dropbox帐户。 有没有什么办法可以实现在后台login,而不会违反Dropbox API标准。 我使用的核心API的方式。 请帮帮我。

Dropbox API的devise意图是让每个用户链接自己的Dropbox帐户,以便与自己的文件进行交互。 但是,连接到一个帐户在技术上是可行的。 SDK不提供明确的支持,我们不build议这样做,出于各种技术和安全原因。

但是,如果您确实想要使用此路线,而不是启动授权stream程,则可以手动为您的应用程序使用现有的访问令牌。 (只要小心不要吊销它,例如通过https://www.dropbox.com/account/security 。)在iOS Core SDK中,您需要使用:

 - (void)updateAccessToken:(NSString *)token accessTokenSecret:(NSString *)secret forUserId:(NSString *)userId; 

不过,这不是一个好主意。 由于这将是一个客户端应用程序,您的应用程序的任何恶意用户可以提取访问令牌,并使用它来绕过您的应用程序试图强制执行的任何访问限制。 例如,他们可以访问他们不应该的内容,或者添加或replace其他用户可以访问的恶意负载的内容。

对不起,我无法按照接受的答案,格雷格似乎很不情愿提供示例代码,因为Dropbox不build议使用这种方式的秘密密钥。 对于任何需要快速解决scheme(例如)将zipfile upload到单个保pipe箱账户而不使用我认为相当不透明的保pipe箱iOS SDK API的情况,以下工作(DropboxOAuthKey是您按下button生成的秘密密钥应用程序控制台):

 NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration]; sessionConfiguration.HTTPAdditionalHeaders = @{ @"Authorization" : [NSString stringWithFormat:@"Bearer %@", DropboxOAuthKey], @"Content-Type" : @"application/zip" }; NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: sessionConfiguration delegate: self delegateQueue: [NSOperationQueue mainQueue]]; self.request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://api-content.dropbox.com/1/files_put/auto/%@?overwrite=false",fileName]]]; [self.request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData]; NSData *data = [[NSFileManager defaultManager] contentsAtPath:zippedPath]; [self.request setHTTPMethod:@"PUT"]; [self.request setHTTPBody:data]; [self.request setTimeoutInterval:1000]; NSURLSessionDataTask *doDataTask = [defaultSession dataTaskWithRequest:self.request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { if (!error){ NSLog(@"WORKED!!!!"); } else { NSLog(@"ERROR: %@", error); } }]; [doDataTask resume];