We are aware of the issue with the badge emails resending to everyone, we apologise for the inconvenience - learn more here.

Forum Discussion

Tejas_99's avatar
Tejas_99
Explorer | Level 3
7 years ago

Salesforce To dropbox file upload

Hello All,

 

I am trying to upload a file from salesforce to Dropbox.

 

I have created a class in salesforce as per suggestions from the internet.

 

My code is:

 

public class dropBoxApi{
Public String code ;
Public String accesstoken;
public String fileBody{get;set;}


public dropBoxApi()
{
code = ApexPages.currentPage().getParameters().get('code') ;
System.debug('Code='+code);
if(code != '' && code != null)
{
AccessToken() ;
}
}

public PageReference DropAuth()
{

system.debug('UPLOAD'+accessToken );
//Authenticating
PageReference pg = new PageReference('https://www.dropbox.com/1/oauth2/authorize?response_type=code&client_id={clientId}&redirect_uri=https://c.na46.visual.force.com/apex/DropBoxPage&state=Mytesting') ;

return null;
}

public void AccessToken()
{
//Getting access token from dropbox


String appKey='************';
String appSecreatKey='**********';
String tokenuri = 'https://api.dropbox.com/oauth2/token?grant_type=authorization_code&code='+code+'&redirect_uri=https://c.na46.visual.force.com/apex/DropBoxPage';
//https://api.dropbox.com/1/oauth2/token?grant_type=authorization_code&code='+code+'&redirect_uri=https://c.ap1.visual.force.com/apex/DropboxPage';
HttpRequest req = new HttpRequest();
req.setEndpoint(tokenuri);
req.setMethod('POST');
req.setTimeout(60*1000);

Blob headerValue = Blob.valueOf('{appKey}' + ':' + '{appSecreatKey}');
String authorizationHeader = 'BASIC ' + EncodingUtil.base64Encode(headerValue);
req.setHeader('Authorization', authorizationHeader);
Http h = new Http();
String resp;
HttpResponse res = h.send(req);
resp = res.getBody();
System.debug('response='+resp);
JSONParser parser = JSON.createParser(resp);
while (parser.nextToken() != null) {
if ((parser.getCurrentToken() == JSONToken.FIELD_NAME)){
String fieldName = parser.getText();
parser.nextToken();
if(fieldName == 'access_token') {
accesstoken = parser.getText();
System.debug('accesstoken='+accesstoken);
}
}
}
system.debug('accessToken:'+accessToken );
System.debug(' You can parse the response to get the access token ::: ' + resp);

}
}

 

 

can anybody tell me what is 'code' value at line 

code = ApexPages.currentPage().getParameters().get('code') ;

 

Help is highly appreciated.

    • Tejas_99's avatar
      Tejas_99
      Explorer | Level 3

      Hi Greg,

      Thanks for the reply.

       

      Can you tell me where will I get authorization code?

       

      As you can see in code I already have value for "code" variable before making any request to dropbox.

      I already have app key and secret key and I can generate access key by clicking on generate access key button in app console but I don't know from where I will get authorization code.

      • Greg-DB's avatar
        Greg-DB
        Icon for Dropbox Staff rankDropbox Staff
        The authorization code is given from Dropbox during the OAuth app authorization flow. It would either be returned on the redirect URI, if used, or directly to the user on the Dropbox web site, if not. Please refer to the links in my last post for more information on how this works.

        The authorization code is a temporary code used to get an access token. Once you have an access token for the user, you no longer need an authorization code for the user.

        Also, if you only need to connect to your own account, you can just use the access token retrieved via the "Generate" button on the App Console as you mentioned. That directly returns an access token for your app and account, without going through the OAuth app authorization flow and getting an authorization code.

About Dropbox API Support & Feedback

Node avatar for Dropbox API Support & Feedback

Find help with the Dropbox API from other developers.

5,877 PostsLatest Activity: 12 months ago
325 Following

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 or Facebook.

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!