Auto Login Dropbox account on Core Api without Login Prompt

I am new to iOs development and I'm creating an app that uses my own dropbox account. I want my app to automatically login to my account to be able to modify & add files in my App's folder. The documentation says that i should call: [[DBSession sharedSession]linkFromController:viewController]; to be able to login. But i dont want to show the login prompt to user's because i only want it to login to my Dropbox account automatically. Is there any way i could achieve login in the background without also violating the dropbox api standards. Im using the Core API by the way. Please help me.


The Dropbox API was designed with the intention that each user would link their own Dropbox account, in order to interact with their own files. However, it is technically possible to connect to just one account. The SDKs don't offer explicit support for it and we don't recommend doing so, for various technical and security reasons.

However if you did want to go this route, instead of kicking off the authorization flow, you would manually use an existing access token for your app. (Just be careful not to revoke it, e.g. via https://www.dropbox.com/account/security .) In the iOS Core SDK you'd need to use:

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

Again though, this isn't a good idea. Since this would be a client-side app, any malicious user of your app could extract the access token and use it to bypass any access restrictions your app attempted to enforce. For example, they could access content they shouldn't or add or replace content with a malicious payload that other users would access.


Sorry, I couldn't follow the accepted answer and Greg seems very reluctant to provide example code since Dropbox doesn't recommend using a secret key in this way. For anyone who needs a quick solution to (for example) uploading zip files into a single dropbox account WITHOUT using what I consider the rather opaque dropbox iOS SDK API, the following works (DropboxOAuthKey is the secret key that you press the button to generate in the app console):

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];