 |
Postado por: Neto Leal em:
Flash
,
Nerd stuffs
,
WebDevelopment
Que o Flickr é bom, todo mundo sabe. Mas poucos imaginam o quanto ele pode oferecer aos desenvolvedores. Um recurso interessante é o uso de sua API para acesso a partir de aplicações externas ao Flickr. Eu já comentei aqui que tinha criado minha própria API para isso. Mas acabei voltando atrás e refiz todo o mural usando uma API já pronta criada por Kelvin Luck. As classes criadas por ele são completas. Com elas é possível não só ler informações a partir do Flickr, mas também ter acesso a TODOS os recursos de lá como se você estivesse navegando dentro do proprio Flickr.
Como nunca mais tinha escrito nenhum post técnico aqui, resolvi fazer um exemplo simples para quem estiver interessado em iniciar uma aplicação do gênero em Flash possa ter seus passos iniciais facilitados.
O primeiro passo para você que quer desenvolver sua "Flash-Flickr-Application" é criar um cadastro no Flickr. Pra isso acesse www.flickr.com. Se você já tiver uma ID do Yahoo nem precisará preencher formulários. Depois entre em www.flickr.com/services e solicite uma APIKey. Vão te fornecer uma senha bem grande para você usar para acessar a API do Flickr remotamente.
O segundo passo é ler a documentação e registrar seu domínio no site do Flickr. Isso pode ser feito acessando www.flickr.com/services. Como já deve ser de conhecimento de todos, o FlashPlayer 8 não permite que sejam acessados documentos diretamente fora do servidor onde o arquivo SWF está hospedado. Isso significa que se você estiver rodando localmente um swf e tentar uma ação do tipo " meuMovieClip.loadMovie('http://static.flickr.com/42/84392637_5474d426a7_m.jpg')" a imagem será carregada normalmente. Porém se você hospedar esse mesmo SWF em um servidor web, não irá funcionar por uma questão de segurança do Flash Player. É por isso que o registo do seu domínio é importante.
Terceiro passo: vá até o site do Kelvin Luck ( http://www.kelvinluck.com/projects/flashr-a-flickr-api-wrapper-for-flash) e baixe as classes criadas por ele para facilitar a nossa vida (Thanks Kelvin!). O que fazer com as classes ? Bom, você pode descompactar o arquivo ZIP no mesmo diretório que seus arquivos .FLA ou pode por direto na pasta 'classes' na instalação do Flash 8.
O exemplo que segue abaixo faz uma consulta simples que busca as fotos públicas de um determinado usuário do Flickr e as retorna.
import com.kelvinluck.flickr.Flickr;
import com.kelvinluck.flickr.FlickrResponseListener;
import com.kelvinluck.flickr.Person;
import com.kelvinluck.flickr.Photo;
import mx.utils.Delegate;
//Sua apiKey fornecida pelo Flickr.com
var api:String = "sua_api_key_do_flickr";
//Seu nome de usuário (aquele endereço original que você tinha antes de criar um 'alias')
var un:String = "seu_nome_de_usuario";
//Criando a instância do objeto da classe Flickr
var flickr:Flickr = Flickr.getFlickr();
//O ResponseListener irá receber todas as ocorrências de retorno dos métodos
//executados pelo flickr. É ele quem recebe os callbacks
var resp:FlickrResponseListener = new FlickrResponseListener();
//Função para iniciar a aplicação
function inicia():Void{
//Definindo qual apiKey será usada para executar os métodos no Flickr (obrigatório)
flickr.apiKey = api;
//Configurando os callbacks
configuraRespListener();
//Efetuando a busca de fotos
buscaFotosPublicas();
}
//Função para buscar as fotos públicas no Flickr
function buscaFotosPublicas():Void{
//Método que busca as fotos públicas
//Pâmetros:
//nsid: String => User Name (definido na variável 'un')
//extras: String => Critérios extras de filtro
//perPage: Number => Número de fotos por página (default = 100)
//page: Number => Número da página recuperada (default = 1)
flickr.peopleGetPublicPhotos(un);
}
//função para configurar o ResponseListener
function configuraRespListener():Void{
//callback do método peoploGetPublicPhotos
resp.onPeopleGetPublicPhotos = Delegate.create(this, recebeFotos);
/*
O uso da classe Delegate é interessante para não perder a referência
ao objeto representado por 'this' na função 'recebeFotos'
Ex.:
//Requer MovieClip no Stage. Nome de instância 'mcTeste"
import mx.utils.Delegate;
var mcTeste:MovieClip;
function testeSemDelegate():Void{
trace("Sem Delegate: " + this); //Aparece: _level0.mcTeste
}
function testeComDelegate():Void{
trace("Com Delegate: " + this); //Aparece: _level0
}
mcTeste.onPress = testeSemDelegate;
mcTeste.onRelease = Delegate.create(this, testeComDelegate);
*/
}
//Função final, executada quando as fotos do Flickr são recebidas pela aplicação
//Parâmetros: usuario: Person => Objeto que representa o usuário consultado
function recebeFotos(usuario:Person):Void{
//Método getPhotos retorna um array de objetos do tipo 'Photo'
var fotos:Array = usuario.getPhotos();
//Loop exibindo no output o título de todas as fotos recebidas
for(var i = 0, t = fotos.length; i < t; i++){
//Recuperando a foto relativa ao iterador 'i'
var foto:Photo = fotos[i];
//Exibindo o título
trace(foto.title);
}
}
//Iniciando a aplicação
inicia();
Agora que você já viu a API funcionando, é só soltar a imaginação e fazer sua própria Flickr Application!
Postado às 16:51
Permalink para este Post
32 Comentários
Leonardo França
,
Higor Oliveria
,
Implante de Cabelos
,
alexandre
,
Jackson
,
Fashion blog
,
louis vuitton
,
louis
,
lv
,
john
,
Replica Watches
,
junior
,
LJ
,
cv
,
Bruno Tavares
,
sanorita
,
Patch panel
,
louboutin
,
123
,
cheap lotro gold
,
dfdg
,
uggboots
,
ugg boot
,
kisspuma
e
uggs on sale
Comentaram
Postado por: Neto Leal em:
Anúncios
,
Flash
,
WebDevelopment
Postado às 17:26
Permalink para este Post
28 Comentários
Thais
,
Jan Cássio
,
Ed Sullivan
,
Neto
,
Renan Fretta
,
Jefferson Gelezauskas
,
Adriano Melo
,
Neto Leal
,
Igor Costa
,
Marcelo
,
Leonardo França
,
Douglas Sales
,
Rochester
,
amanda
,
lv
,
dfdg
,
ugg boot
,
uggboots
,
uggs on sale
e
nicky
Comentaram
Postado por: Neto Leal em:
Internet Geral
,
WebDevelopment
Tem uma galera que gosta mesmo de "chupar" as idéias dos outros. Se você gosta de aproveitar idéias que viu em algum site legal, quer uma dica? Não caiam na merda de copiar sites que TODO MUNDO conhece. Pelo menos não fica tão na cara assim, né ? Não que eu apoie. Pelo contrário, eu sou absolutamente contra. Até mesmo por que eu já caí nessa armadilha quando na primeira versão do meu site pessoal tive uma "inspiração" no site da 2Advanced e fui apedrejado por isso. Dá uma olhada nisso aqui: Original (Veja o trailer) - Cópia barata Fala sério. Será que existe alguém que já trabalhe a algum tempo na área de web que não conheça a LifeMotion ? Outro comentário: Posso até estar enganado, mas o layout do site da "The moon" não tem a maior cara de template de CD de exemplos de Flash ? eu hein ...
Postado às 0:00
Permalink para este Post
21 Comentários
Djavan Carvalho
,
Paulo Kato
,
Pablo Souza
,
Emanuel Costa
,
Mateus Damião
,
Junio Vitorino
,
Raphael Nikson
,
Carlos Bossa Nova
,
Lucas Marça
,
Rodrigo
,
Renata Tuccimei
,
filipe
,
lv
,
cv
,
dfdg
,
ugg boot
,
uggboots
,
uggs on sale
,
nicky
e
fashion brand shoeshua
Comentaram
Devido a internet estar em constante evolução os métodos de burlar dados também crescem na mesma proporção, hoje já existem alguns programas capazes de extrair todas as imagens, fontes incoporadas, sons, códigos fonte existentes em seu arquivo swf, ou até mesmo reconstruir o seu arquivo *.fla apartir de um arquivo swf, utilizando a engenharia reversa. Não culpe a Macromedia por essa vulnerabilidade, isso é um mau existente dia-a-dia e nos melhores softwares, projetos e linguagens de programação.
Para a felicidade de nós desenvolvedores, já existem várias formas de criptografar nossos arquivos swfs e torná-los inacessíveis, através de softwares capazes de criptografar os arquivos swfs, um deles é um projeto open source chamado Flasm que utiliza a linguagem assembler para criptografia, também existe o Flash Incrypt software trial que protege seus arquivos swfs contra usuários mau intencionados e o aso também contendo a funcionalidade de criptografar os arquivos swfs.
Também é bom pensar no caso de utilização indevida de seu arquivo, por exemplo: a sua empresa http://www.empresax.com.br possui um arquivo nomeado banner.swf e você quer utiliza-lo no domínio de seu primeiro cliente (http://www.clientea.com.br). Aí você me diz: - Basta copiar este arquivo para o ftp do cliente, utilizo o velho loadMovie e carrego o arquivo, pronto, resolvido! Parece fácil ein?! Agora imagine que sua empresa cresceu assustadoramente conseguiu conquistar mais 258 clientes que querem utilizar este mesmo banner swf em sua página principal. Você vai fazer uma cópia desse mesmo banner para todos os novos clientes???
E mais... Se você tiver que alterar uma fonte em seu banner, uma cor, ou até mesmo acrescentar algum link nele que venha a ter que ter o mesmo efeito para todos? Você teria que contactar seus 259 clientes, para que eles possam fazer o upload do seu novo arquivo. Agora dificultou. Pronto acho que consegui convencer vocês que não é uma proposta adequada, mais olhem só, alguém sugeriu que seu banner poderia estar no domínio da sua empresa, e ser carregado ainda através do metódo loadMovie: alvo.loadMovie ("http://www.empresax.com.br/banner.swf" ). Infelizmente milhares de pessoas também podem fazer isso, utilizando o seu banner tão bem trabalhado que te custou várias noites mau dormidas.
Calma aê, é importante lembrar que para ter acesso à dados externos ao seu domínio é necessário a utilização de normas adequadas de segurança, neste assunto o Flash possui um domain intrínsico incluso em seu SandBox de segurança , com a inclusão do que é chamado de Cross Domain Policy que seta regras de permissão de acesso aos dados através de classes tipo LoadVars, MovieClipLoader, ou métodos existentes em algumas classes como o loadMovie, load da classe XML ou CSS, entre outros, acionados por um arquivo swf.
O objeto System.security contém métodos que especificam como será a comunicação dos arquivos swfs entre domínios diferentes.
Utilizando o método System.security.allowDomain() é possível que seu arquivo swf possa especificar quais domínios poderão carrega-lo.
O método System.security.loadPolicyFile(url:String) carrega um arquivo xml de uma determinada url. Este arquivo XML fornece um mecanismo de permissões que permite aos seus arquivos Flash carregarem conteúdos de servidores diferentes descritos no arquivo XML. Este arquivo XML terá que estar no domínio de sua empresa (http://www.empresax.com.br/crossdomain.xml) e deve ter a seguinte estrutura:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy
SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="www.clientea.com.br" />
<allow-access-from domain="clienteb.com.br" />
.
.
.
<allow-access-from domain="192.168.0.1" />
</cross-domain-policy>
contendo todos os domínios e/ou IPS que poderão utilizar seu arquivo banner.swf.
O último caso a se pensar, espero, é quando o individuo já não consegue alterar, digo descriptografrar, seu arquivo swf, devido a você já ter utilizado o software de criptografia,
já ter setado as diretivas de segurança utilizando o objeto System.security, porém mesmo assim ele de posse de seu arquivo swf armazenado após
visita ao domínio em uma pasta de arquivos temporários criada pelo browser, continua o utilizando. Aí é apelar e desenvolver uma classe ou um código
que verifique qual a url de onde está sendo aberto o seu arquivo, utilizando o _root._url, e caso não seja a do domínio de seus clientes você bloqueia o uso do arquivo. Bem, eu desenvolvi um esquema que faz toda essa configuração para os arquivos da empresa a qual trabalho, mas como infelizmente não posso distribuí-la por normas da empresa, fica no ar o desafio. Caso você precise de alguma ajuda especial, me encontre pelo msn: felipebzr@yahoo.com.br ou através de nosso grupo: www.fugpe.com.br
Caso você queira mais informações sobre segurança, fazer comentários ou relatar qualquer bug do Flash Player, envie uma mensagem para flashplayer_security@macromedia.com . Suas mensagens serão valiosas para a construção de uma aplicação robusta e segura.
[]'s
Felipe Andrade Bezerra
Macromedia Certified Developer Professional
Postado às 21:11
Permalink para este Post
21 Comentários
Sarah Pimentel
,
,
Fabricio Mendonça
,
Luciano Ayres
,
Danielle Alves Costa
,
helio marques
,
Flavio
,
Leônidas Amorim
,
lv
,
christian louboutin
,
dfdg
,
wowboots
,
ugg boot
,
dfaapple
,
uggboots
,
uggs on sale
,
nicky
e
123belovebiz
Comentaram
Postado por: Neto Leal em:
Flash
,
Nerd stuffs
,
WebDevelopment
Navegando encontrei esse link e achei interessante demonstrar o poder do som na criação das nossas animações. Para uma boa animação, deve haver um bom som interagindo com ela.
http://michalevy.com/gs_download.html
Postado às 16:36
Permalink para este Post
24 Comentários
,
MECH
,
Mateus Damião
,
Breno C.
,
PaNcHO
,
Denilson Vasconcelos
,
Carlinhos Bossa Nova
,
Paulo Kato
,
dasd
,
marginaldc
,
lv
,
christian louboutin
,
dfdg
,
ugg boot
,
uggboots
,
uggs on sale
,
fashion brand shoeshua
e
nicky
Comentaram
Um dos principais problemas de um webdesigner que está começando e até mesmo de uma empresa de Web, é aquela pergunta classica: "Quanto combrar por um projeto ?"
Hoje encontrei por acaso um artigo muito interessante da revista www (Que este mês trás a minha primeira coluna impressa) que fala exatamente sobre esse assunto. Vale a pena a leitura para esclarecer algumas de suas dúvidas.
Veja o artigo inteiro aqui.
|
 |
 |