· 

SalesforceとDropBoxのAPI連携

SalesforceからDropBoxへのファイル連携サンプル

Salesforceの中のファイルをDropBoxに移さなきゃ行けなくなった。

API自体は公開されているが全編英語?!

 

googleに聞いてみるとどこもSDK使ってて中身がわからない。

ということでgoogle翻訳に切り替えてちまちま作ってみました。

 

Base64にエンコードして渡すんだけど上手くいかない・・・

なにやらファイルの実態をbodyに渡さなきゃいけない的なことらしい。

 

でもHttpRequest.setBody(body)ではblob型入らないし???

 

と思ったらちゃんとありました。知らなかったー!

HttpRequest.setBodyAsBlob(body)

 

ということで以下はサンプルコードです。

 

--------------------------------------------------------------------------------------------------------------------------------------------

public class DropBoxApi{

    //アクセストークン

    private static String acToken = 'ご自身のアプリのアクセストークン';

    

    // ファイル作成

    public void createFileInDropbox(){

        HttpRequest req = new HttpRequest();

        req.setEndpoint('https://content.dropboxapi.com/2/files/upload');

        req.setMethod('POST');

 

        // アクセストークンをセット

        req.setHeader('Authorization', 'Bearer ' + acToken);

        // ファイルの種類がテキストならこっち

        //req.setHeader('Content-Type', 'text/plain; charset=dropbox-cors-hack');

        // ファイルの種類がテキスト以外ならこっち

        req.setHeader('Content-Type', 'application/octet-stream');

        // ファイルの格納先

        req.setHeader('Dropbox-API-Arg','{ "path":"/Salesforce Documents/aaaaa.pdf" }');

        //ファイルの実態

        ContentVersion cv = [SELECT Id

                                                  ,VersionData

                                        FROM   ContentVersion

                                       WHERE  TITLE = '移行ファイル'

                                       limit 1];

        //ファイルをbodyに格納                    

        req.setBodyAsBlob(cv.VersionData);

        

        //リクエストを送信

        Http http = new Http();

        HTTPResponse res = http.send(req);

    }

}