Direct S3

HTML

<script src="https://sdk.amazonaws.com/js/aws-sdk-2.0.0-rc1.min.js"></script>
<input type="file" id="file-chooser" /> 
<button id="upload-button" style="display: none">Upload to S3</button>
<div id="results"></div>
<div id="fb-root"></div>
<input type="file" id="file-chooser" /> 
<button id="upload-button" style="display: none">Upload to S3</button>
<div id="results"></div>
<div id="fb-root"></div>

JavaScript

var appId = '392600167508980';
var roleArn = 'arn:aws:iam::826078311284:role/topiee';
var bucketName = 'topiee';
var fbUserId;

var bucket = new AWS.S3({params: {Bucket: bucketName}});

var fileChooser = document.getElementById('file-chooser');
var button = document.getElementById('upload-button');
var results = document.getElementById('results');
button.addEventListener('click', function() {
    var file = fileChooser.files[0];
    if (file) {
        results.innerHTML = '';
        
        //Object key will be facebook-USERID#/FILE_NAME
        var objKey = 'facebook-' + fbUserId + '/' + file.name;
        var params = {Key: objKey, ContentType: file.type, Body: file, ACL: 'public-read'};
        bucket.putObject(params, function (err, data) {
            if (err) {
                results.innerHTML = 'ERROR: ' + err;
            } else {
                var imageTag = "<img src='" + "https://s3-ap-northeast-1.amazonaws.com/" + bucketName + "/" + objKey + "'></img><br/>";
                results.innerHTML += imageTag;
            }
        });
    } else {
        results.innerHTML = 'Nothing to upload.';
    }
}, false);

/*!
     * Login to your application using Facebook.
     * Uses the Facebook SDK for JavaScript available here:
     * https://developers.facebook.com/docs/javascript/gettingstarted/
     */
window.fbAsyncInit = function() {
    FB.init({ appId: appId });
    FB.login(function(response) {
        bucket.config.credentials = new AWS.WebIdentityCredentials({
            ProviderId: 'graph.facebook.com',
            RoleArn: roleArn,
            WebIdentityToken: response.authResponse.accessToken
        });
        fbUserId = response.authResponse.userID;
        button.style.display = 'block';
    });
};

// Load the Facebook SDK asynchronously
(function(d, s, id){
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) {return;}
    js = d.createElement(s); js.id = id;
    js.src =...