Compartilhamento de imagens de tela HTML5 diretamente no Facebook

TL; DR Fiz um pequeno aplicativo da web que envia o conteúdo da tela HTML 5 diretamente para o Facebook, sem armazenamento intermediário. Ele converte o canvas UrlData que é base64 em png e posta no mural do usuário.

Você anseia pelos dias de Heroes of Might and Magic III? 🙂 Jogo incrível. Alguns dias atrás, encontrei um ótimo post no Hacker News. Eu não usei o AWS antes, então estava curioso para experimentá-lo. Eu queria fazer algo um pouco mais sofisticado do que um app hello world, então surgiu essa ideia de um gerador de eventos (o jogo tem eventos periódicos, geralmente com títulos engraçados.).

Cenário
este não é realmente do jogo

Eu queria adicionar um compartilhamento para eventos. Minha primeira ideia era fazer um aplicativo Heroku simples que colocasse objetos no S3. O Amazon S3 é realmente uma ótima ferramenta, mas pode ser muito caro (especialmente quando você não ganha dinheiro com ele). Posso fazer melhor? Certo. Eu achei o post SO explicando como converter dados de canvas em png e enviá-los com XHR. O mérito está na função postCanvastoFacebook

function postCanvasToFacebook() {
var data = canvas.toDataURL("image/png");
var encodedPng = data.substring(data.indexOf(',') + 1, data.length);
var decodedPng = Base64Binary.decode(encodedPng);
FB
.getLoginStatus(function(response) {
if (response.status === "connected") {

e, em seguida, dependendo de diferentes status chamadas de função postImageToFacebook

postImageToFacebook(response.authResponse.accessToken, "heroesgenerator", "image/png", decodedPng, "www.heroesgenerator.com");

Github