Forum Discussion

whizpool t.'s avatar
whizpool t.
New member | Level 1
10 years ago

how to get all files in pdf format can dropbox convert before i download it through the API

I have doc file on my dropbox when i access these files from my app i want them to be in pdf 
techincally i want them to be downloaded in pdf

19 Replies

Replies have been turned off for this discussion
  • whizpool t.'s avatar
    whizpool t.
    New member | Level 1
    10 years ago

    from retrieving from this

            MPOAuthCredentialConcreteStore *creds = [[DBSession sharedSession] credentialStoreForUserId:[[NSUserDefaults standardUserDefaults] stringForKey:UID]];

            

            NSLog(@"\n\naccess token key: %@ secret: %@", creds.accessToken, creds.accessTokenSecret);

    and when i pass creds.acessToken as <acessToken>

    {"error" : "Invalid OAuth2 token."}

     

    and when i pass creds.accessTokenSecret as <acessToken>

    {"error" : "Invalid OAuth2 token."}


  • Greg-DB's avatar
    Greg-DB
    Icon for Dropbox Community Moderator rankDropbox Community Moderator
    10 years ago

    Unfortunately, I don't have a sample implementation of this endpoint in Objective C to share. 

    Note that the iOS SDK itself uses OAuth 1, so the stored access token from credentialStoreForUserId can't be directly used as an OAuth 2 access token, which is why you're getting that "Invalid OAuth2 token" error.

    If you do want to use that stored OAuth 1 access token, there's a blog post that shows how to implement OAuth 1 here:

    https://blogs.dropbox.com/developers/2012/07/using-oauth-1-0-with-the-plaintext-signature-method/

    (The iOS Core SDK is open source though, so you could alternatively add the source directly and modify the code to add /previews.)

    Another option entirely though, which I recommend if your app is still in development mode, is to switch to using the SwiftyDropbox library for API v2, if you can (since it's for Swift):

    https://www.dropbox.com/developers/documentation/swift

  • Greg-DB's avatar
    Greg-DB
    Icon for Dropbox Community Moderator rankDropbox Community Moderator
    10 years ago

    That error message indicates you're still passing up the access token like an OAuth 2 access token (using the "Bearer" syntax), but if you have an OAuth 1 access token, you need to use the OAuth 1 syntax from the blog post I linked to.

  • Greg-DB's avatar
    Greg-DB
    Icon for Dropbox Community Moderator rankDropbox Community Moderator
    10 years ago

    For example, I'm not an Objective-C expert, but something like this (modified from your previous code sample):

        MPOAuthCredentialConcreteStore *creds = [[DBSession sharedSession] credentialStoreForUserId:UID];




        NSString *authorization = [NSString stringWithFormat:@"OAuth oauth_version=\"1.0\", oauth_signature_method=\"PLAINTEXT\", oauth_consumer_key=\"%@\", oauth_token=\"%@\", oauth_signature=\"%@&%@\", appKey, creds.accessToken, appSecret, creds.accessTokenSecret];




        NSString *filePath = @"/Testing/Documents/test.docx";

        NSURL *url = [NSURL URLWithString:[

                                           [NSString stringWithFormat:@"https://content.dropboxapi.com/1/previews/auto/%@", filePath] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding

                                           ]

                      ];







        NSMutableURLRequest *request =

        [NSMutableURLRequest requestWithURL:url

                            cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData

                            timeoutInterval:10

         ];




        [request setValue:authorization forHTTPHeaderField:@"Authorization"];

        [request setHTTPMethod: @"GET"];




        NSError *requestError = nil;

        NSURLResponse *urlResponse = nil;




        NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&requestError];




        NSString *fileName = @"test_205881743.pdf";

        NSString *localDir = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

        NSString *localFilePath = [localDir stringByAppendingPathComponent:fileName];




        [response writeToFile:localFilePath atomically:YES];

        NSLog(@"%@", localFilePath);

    (That doesn't have the error handling implemented though.)

About Dropbox API Support & Feedback

Node avatar for Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.

The Dropbox Community team is active from Monday to Friday. We try to respond to you as soon as we can, usually within 2 hours.

If you need more help you can view your support options (expected response time for an email or ticket is 24 hours), or contact us on X, Facebook or Instagram.

For more info on available support options for your Dropbox plan, see this article.

If you found the answer to your question in this Community thread, please 'like' the post to say thanks and to let us know it was useful!