quinta-feira, 19 de setembro de 2013

Mudando foto de capa

Para mudar a foto da capa de uma fanpage no facebook via api javascript:
(cria um álbum na fanpage da pessoa, e precisa das permissões manage_pages,publish_stream,photo_upload,user_photos)

var fanpageID = "id da minha fanpage";

function acaoDeCapa()
{
    $(".meu-link").click(function() {
       
        var tudo = $(this).parent();
        var imagem = tudo.find("img").attr("src");
        var local = location.protocol + "//" + location.host;
        var caminho = local + imagem;

        var nomeAlbum = 'Album de Capas';

        FB.api('/' + fanpageID + '?fields=access_token', function (response) {

            FB.api('/' + fanpageID + '/albums', function(albuns) {

                var access_token = response.access_token;

                mudarImagem(albuns, nomeAlbum, access_token, caminho);
            });

        });
    });

}

function mudarImagem(albuns, nomeAlbum, access_token, caminho)
{
    var albumid = pegarAlbum(albuns, nomeAlbum);

    if (albumid != "")
    {
        subirImagem(access_token, albumid, caminho);
        return;
    }

    var album_params = {
        access_token: access_token,
        name: nomeAlbum,
        message: nomeAlbum
    };

    FB.api('/' + fanpageID + '/albums', 'post', album_params, function(album) {

        subirImagem(access_token, album.id, caminho);

    });
}

function pegarAlbum(albuns, nomeAlbum)
{
    for(var a in albuns.data)
    {
        var album = albuns.data[a];

        if (album.name == nomeAlbum)
        {
            return album.id;
        }
    }

    return "";
}

function subirImagem(access_token, album_id, caminho)
{
    if (caminho.indexOf("http://localhost") > -1)
        caminho = "http://upload.wikimedia.org/wikipedia/commons/2/22/Turkish_Van_Cat.jpg";

    var imagem = { access_token: access_token, url: caminho };

    FB.api("/" + album_id + "/photos", "post", imagem, function (imagem_facebook) {

        mudarCover(access_token, imagem_facebook.id);

    });
}

function mudarCover(access_token, imagem_id)
{
    var cover = { access_token: access_token, cover: imagem_id, offset_y: 0 };

    FB.api('/' + fanpageID, 'post', cover, function(response_cover) {
                       
        console.log(response_cover);

    });
}

quinta-feira, 5 de setembro de 2013

Trófeu Gambiarra MVC

Hoje esbarrei com um problema com rotas no meu adorado MVC.
Se você colocar isso:

            context.MapRoute(

                "Facebook",
                "Facebook/{controller}/{action}/{id}",
                new { controller = "Usuario", action = "Inicio", id = UrlParameter.Optional },
                new[] { typeof(UsuarioController).Namespace }
            );

            context.MapRoute(

                "Corretores",
                "Corretores/{controller}/{action}/{id}",
                new { controller = "Usuario", action = "Inicio", id = UrlParameter.Optional },
                new[] { typeof(UsuarioController).Namespace }
            );


Quando você estiver em uma página com a url /Corretores, os links apontarão para /Facebook. Não só isso, se houver redirecionamento (ex: RedirectToAction, no controller), também irá para /Facebook. Para consertar isso, você pode fazer a coisa horrorosa abaixo e tudo ficará bem (menos a sua consciência).

            context.MapRoute(

                "Facebook",
                "Face{book}/{controller}/{action}/{id}",
                new { controller = "Usuario", action = "Inicio", id = UrlParameter.Optional },
                new[] { typeof(UsuarioController).Namespace }
            );

            context.MapRoute(

                "Corretores",
                "Corretores/{controller}/{action}/{id}",
                new { controller = "Usuario", action = "Inicio", id = UrlParameter.Optional },
                new[] { typeof(UsuarioController).Namespace }
            );