cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Announcements
Share your feedback on the Document Scanning Experience in the Dropbox App right here.

Dropbox API Support & Feedback

Find help with the Dropbox API from other developers.

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

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

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

whizpool t.
New member | Level 1

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 19

Greg-DB
Dropbox Staff

What's the value of dropboxPath? Are you sure that "<Acess Token>" is linked to the same app and account as pMainDelegate.restClient? 

whizpool t.
New member | Level 1

dropboxpath is /file_name_with_extension

yeah i am sure 

whizpool t.
New member | Level 1

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."}


whizpool t.
New member | Level 1

can you please elaborate the whole method for getting access token for https://content.dropboxapi.com/1/previews/auto as you can see i have already tried the above method.

my scenario is when a user login to app then the access token should get saved in the app

Greg-DB
Dropbox Staff

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

whizpool t.
New member | Level 1

I tried the whole procedure
as documented in 

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

but when i passed the end resulted access token to 

https://www.dropbox.com/developers-v1/core/docs#previews

 

the error is still same

i told you i am using objective-c  for development and all the issue 
and dear you just wasted my day

Greg-DB
Dropbox Staff

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
Dropbox Staff

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.)

whizpool t.
New member | Level 1

after how much time the Access Token Generated by this blog post  will expire

Greg-DB
Dropbox Staff

Dropbox API access tokens don't expire. 

Users can manually revoke tokens themselves though, e.g. via:

https://www.dropbox.com/account/security

Apps can also revoke access tokens via:

v1: https://www.dropbox.com/developers/core/docs#disable-token

v2: https://www.dropbox.com/developers/documentation/http/documentation#auth-token-revoke

Need more support?
Who's talking

Top contributors to this post

  • User avatar
    Greg-DB Dropbox Staff
  • User avatar
    whizpool t. New member | Level 1
What do Dropbox user levels mean?