Opensocial-BR GTUG
26Jul/100

Update: plataforma opensocial no Orkut e aprovação de aplicativos

Parece que a maré ruim do Orkut está passando. Semana passada houve uma atualização dos ambientes que resolveu boa parte dos problemas que estavam acontecendo - pelo menos os principais que incluem requisição de informações de viewer/owner, através de data pipelining e atualização de atividades estão funcionando.

Além disso, depois de alguns usuários reportarem problemas com conteúdo impróprio dentro da rede, o processo de aprovação automática foi melhorado consideravelmente para tentar banir aplicativos.

Como resultado dessa melhoria, o processo de autorização ficará um pouco mais demorado, por outro lado, não teremos aquele monte de lixos disponíveis no diretório do Orkut. Além do processo um pouco mais demorado, alguns aplicativos tiveram problemas e marcados como black-listed.

Se você foi marcado e tem certeza que seu aplicativo está dentro das normas descritas pelo Orkut, envie um e-mail na lista opensocial-orkut, que alguém do Google colocará manualmente o status de "cleared".

Mais informações, nas threads abaixo:

Como sempre, não deixem de fazer contato caso tenham alguma dificuldade ou dúvida.

Um abraço!

Robson Dantas

13Jul/100

Problemas na plataforma Opensocial do Orkut – posição oficial do Google

Já se passaram algumas semanas desde o estouro dos problemas que estão acontecendo com a plataforma Opensocial do Orkut, e oficialmente, lançaram um post no GoogleCode dando um parecer oficial, veja aqui.

Basicamente, o que foi alegado é que um bug estava presente em alguma das ferramentas opensource usadas pelo Orkut (provavelmente o Shindig ), e que afetou gravemente uma série de funcionalidades.

Venho acompanhando os status enviados na lista, mas o fato é que o problema já se arrasta por praticamente um mês. Assim que as novidades aparecerem, escrevo um post por aqui.

Lembrando que o problema afeta basicamente a versão "profile" dos gadgets e a publicação de "activities".

Dúvidas ? Entre em contato.

1Jul/100

Problemas na plataforma de Opensocial no Orkut

Se você está com problemas nas atualizações das atividades (activities), ou está com problemas ao mostrar os dados no perfil do usuário - owner_data, por exemplo, então você está sofrendo as consequências de um bug do Orkut que se arrasta há mais de 10 dias.

Apesar de todo esforço que a equipe do Orkut está realizando, o fato é que milhares de aplicativos e usuários estão sendo afetados, portanto, fique de olho nas suas aplicações e realize pequenas modificações para que o problema impacte menos seus usuários.

  1. Coloque algum html estático ou imagem na versão profile do seu aplicativo;
  2. Desative ou faça rotinas de verificação de erro ao enviar uma atividade;

Para acompanhar o andamento dos problemas, verifique as mensagens postadas na opensocial-orkut:

Bug 1
Bug 2

Lembrando que a data referência desse post é de 01 de julho de 2010.

um abraço.

29Jun/101

Ser reconhecido é bom

Fui surpreendido recentemente com um e-mail da Google - especificamente de Prashant Tiwari (developer relations, trabalhando com Orkut), enviando agradecimento pelo esforço e tempo dedicado em ajudar as pessoas nas listas de discussão sobre Opensocial. Há um tempo atrás, já havia recebido o título de Opensocial Guru, porém, dessa vez fui reconhecido como um "SuperStar".

Pode ser algo bobo, ou até inútil, mas obter reconhecimento é sempre bom. E receber um reconhecimento vindo da Google é melhor ainda.

Isso demonstra que apesar de ser uma empresa grande, valoriza muito as pessoas que ajudam na evangelização dos produtos e/ou APIs.

um abraço.

19Jun/102

Biblioteca para acesso ao Orkut em PHP – 3legged OAuth orkut client

Post original do Blog do Robson Dantas

Hoje, gostaria de anunciar que consegui dedicar uma parte das minhas madrugadas desenvolvendo e ajudando um projeto opensource, que consegue se conectar ao Orkut. Para quem já conhece Opensocial, sabe que é possível desenvolver aplicativos para redes sociais e fazê-los rodar lá dentro. Mas e caso você queira fazer uso da rede social para promover seu aplicativo/site, sem ter necessariamente que produzir um aplicativo Opensocial ?

O Facebook, por exemplo, permite tal interação através do Facebook Connect, que é basicamente um conjunto de APIs para interagir com a rede, ex: mudar mensagem de status, postar mensagens no mural, buscar amigos, etc …

Até pouco tempo atrás, a única forma de interagir com o Orkut sem estar necessariamente logado dentro da rede, era usando o 2-legged OAuth que foi disponibilizado a partir da versão 0.8 do Opensocial via REST ou RPC - em poucas palavras, para ter acesso às informações do usuário por fora da rede social, o usuário deve ter um aplicativo seu escrito em Opensocial instalado no perfil. Como parte dos inúmeros processos de melhoria, o time do Orkut desenvolveu um projeto, chamado Orkut-os-client – baseado em 3legged OAuth, e que permite fazer acesso as informações dos usuários dentro do Orkut sem precisar de nenhum aplicativo instalado no perfil.

Mas nem tudo é uma maravilha: A API foi desenvolvida em Java, sendo que a grande maioria das pessoas usam PHP para o desenvolvimento. Depois de um certo tempo lendo usuários solicitando a API em outras linguagens, decidi migrar parte do código para a linguagem PHP, e pesquisando, consegui fazer algo simples e rápido.

A pergunta que você pode estar fazendo é “como simples e rápido” ? Bom, primeiro dei uma lida geral no código fonte da API em Java e descobri que todo o processo é um RPC Wrapper, e que as chamadas dos métodos da rede social são exatamente as mesmas usadas no Opensocial, ex: “messages.get” .

Com base nisso, fiz download da API já existente – desenvolvida pelos caras da Google, chamadaopensocial-php-client -  que possui implementação de 2-legged e 3-legged para uma grande parte das redes sociais.

Apliquei um patch, modificando as url’s de access token, além de alterar as chamadas JSON que são feitas ao servidor de RPC, e funcionou muito bem. Já há uma versão rodando que permite ler e gravar SCRAPS, além de pegar informações dos seus amigos.

Continuo trabalhando para dar suporte às outras funcionalidades: Álbum, activities, e outros.

O projeto foi disponibilizado no GoogleCode, e criei uma lista de discussão para os interessados no desenvolvimento. Caso queira participar, sua contribuição é bem vinda.

Site do projeto, no Google Code: Orkut-os-client-php

Grupo de discussão sobre a biblioteca

Enjoy!

Robson Dantas

17Apr/102

Orkut lança página de estatística para aplicativos opensocial

Quem trabalha com desenvolvimento para aplicativos opensocial para Orkut, sabe da dificuldade de conseguir estatísticas precisas do uso dos aplicativos.

Há um tempo atrás, o Orkut liberou uma funcionalidade que envia toda semana, por email, um resumo das atividades do seu aplicativo e que ajudam a entender um pouco mais os acessos, principalmente na visão profile, que depois das mudanças por questões de segurança, não permitem mais uso de javascript.

Além disso, o processo de validação de propriedade do aplicativo, envio de novos gadgets para validação, ficaram concentrados nesse console administrativo, o que torna o processo mais prático. Veja um printscreen abaixo do funcionamento desse console administrativo:

Console administrativo do desenvolvedor opensocial

Console administrativo do desenvolvedor opensocial

Para acessar a funcionalidade, basta ir para o endereço http://www.sandbox.orkut.com/Main#Developer . Não se esqueça que só vai funcionar se você estiver na versão nova do Orkut. Na antiga, não funciona.

Veja um exemplo de estatística:

Estatística de um aplicativo orkut

Estatística de um aplicativo orkut

um abraço!

10Apr/100

Chamadas em Callback flash por javascript e chamadas javascript no flash e Opensocial

Tem sido uma pergunta um pouco comum na lista de desenvolvimento de Opensocial, o processo de integração entre flash e javascript e javascript e flash. Sim, é totalmente possível realizar a integração - com flash player >= 8:

  • Chamar uma função do flash via javascript;
  • Chamar uma função javascript via flash;

Escrevi flash acima, mas entenda por actionscript. Precisará escrever código em actionscript para poder fazer a comunicação, através de uma interface chamada "ExternalInterface".

Além do correto funcionamento do que você desenvolver em AS3, precisará seguir uma receita de bolo para poder fazer o processo funcionar. Ex:

  • Configurar o crossdomain.xml, ou colocar explicitamente o código de AllowDomain no flash, para não dar problema de security exception;
  • Criar um wrapper javascript para chamar a função do flash, que é diferenciado para Internet Explorer e Firefox;
  • Usar as funções de embedFlash nativas do desenvolvimento em Opensocial (para Orkut), pois farão o tratamento automático, sem necessidade de uso de swfobject e proxy de url;

Exemplo de um código AS3, bem simples, que faz chamada em uma função javascript chamada 'teste' e adiciona um callback 'continuacaoTeste', que chama uma função 'printResult' do AS3.

package
{
	import flash.display.Sprite;
	import flash.external.ExternalInterface;
	import flash.system.Security;
	import flash.text.TextField;

	public class Teste extends Sprite
	{
		public var txt: TextField;

		public function Teste (): void
		{
			Security.allowDomain ('*');
			if (ExternalInterface.available)
			{
				ExternalInterface.call('teste');
				ExternalInterface.addCallback('continuacaoTeste', this.printResult);
			}
		}

		private function printResult (str: String): void
		{
			this.txt.text = str;
		}
	}
}

Note na diretriz Security.allowDomain('*') . Não é o ideal, mas para o caso desse teste bem simples, exclui a necessidade do crossdomain.xml .

Feito o código acima, gere o swf e vamos partir para o código Opensocial necessário para fazer a comunicação flash x javascript.

<?xml version="1.0" encoding="utf-8" ?>
 <Module>
   <ModulePrefs title="OpensocialBR - javascript + flash"
			  description="Exemplo de flash com javascript - opensocial-br"
			  author="Robson Dantas"
			  author_email="robson (at) dxs.com.br"
			  author_location="Sao Paulo, Brazil"
			  screenshot="http://www.opensocial-br.org/logo.jpg"
			  thumbnail="http://www.opensocial-br.org/logo.jpg">
	 <Require feature="opensocial-0.8" />
	 <Require feature="views" />
     <Require feature="flash" />

   </ModulePrefs>

	<Content type="html" view="canvas,profile">
	   <![CDATA[
		<html>
			<head>
				<script type="text/javascript">
					function init()
					{
                        adicionaFlash();
					}

                    function adicionaFlash()
                    {
                        // carrega o flash, no container 'splayer', com 200x200
                        var params={allowscriptaccess:"always", wmode: "window", width: 200, height: 200}
                        gadgets.flash.embedFlash("http://www.opensocial-br.org/exemplo/teste_opensocial.swf", document.getElementById("splayer"), 9, params);
                    }

                    // wrapper para chamar funcao flash
                    function thisMovie(movieName) {
                        if (navigator.appName.indexOf("Microsoft") != -1) {
                            return window[movieName];
                        } else {
                            return document.getElementById(movieName);
                        }
                    }

                    // chamada do flash
                    function teste()
                    {
                        alert("flash chamou a funcao teste");
                    }

                    // javascript que chama o callback do flash
                    function chamaFuncaoFlash()
                    {
                        // notar o 'swfContainer0', que pode ser inspecionado pelo firebug é colocado automaticamente como
                        // swfContainer0 . Pode-se criar um javascript que pegue o próximo child do container 'splayer'

                        thisMovie("swfContainer0").continuacaoTeste("string de teste");
                    }

                    // funcao de carga padrão do opensocial
					gadgets.util.registerOnLoadHandler(init);
				</script>
			</head>
			<body>
                <div id="splayer">flash carrega aqui</div>
				<input type="button" value="callback flash" onclick="chamaFuncaoFlash();">
			</body>
		</html>
		]]>
	</Content>
</Module>

Notas importantes:

  • É necessário usar gadgets.flash.embedFlash para garantir que não exista problemas de segurança;
  • Veja o wrapper "thisMovie". É uma função auxiliar para trazer o id do flash, que não funciona no IE da mesma forma que o firefox;

Caso queira, pode baixar o código fonte:

Referências:

  1. Flash and Everything Else - Guya.net ;
  2. Referência de ExternalInterface - site da Adobe;

Espero que tenha ajudado, e caso tenha alguma dúvida, faça contato no formulário de comentários abaixo.

10Mar/100

Orkut lança Caja para melhorar segurança dos aplicativos Opensocial

Caja - que é pronunciado como KA-HAH, é um toolkit javascript que possibilita que seu aplicativo seja protegido por uma série de ataques em páginas web. Com a evolução e disseminação dos aplicativos opensocial nas redes sociais, tal medida de segurança se torna cada vez mais necessária para proteger o usuário final de uma série de problemas - algo que já aconteceu lá nos primórdios do opensocial e que fizeram o Orkut desabilitar javascript e flash na visão profile.

Para acesso a funcionalidade, basta um simples require no seu módulo opensocial:

<Require feature="caja" />

O módulo, além de diversas funcionalidade de segurança, permite a abertura de um canal de comunicação com o Flash, chamado de FlashBridge.

Confirma um demo criado pela equipe do Orkut.

Caso queira mais detalhes, veja o post na íntegra sobre Caja no Orkut.

8Mar/100

Arquivos da apresentação sobre Opensocial no SP-GTUG

Como prometi no último encontro na GlobalCode, disponibilizei os arquivos usados como "Helloworld", além dos testes que fiz com o Shindig, formando uma espécie de versão modificada do iGoogle, usando Opensocial e Jquery.

Faça download dos arquivos de exemplo usando Opensocial.

Uma breve explicação sobre os arquivos contidos no zip acima:

- Pasta robson: contém os arquivos que simulam o iGoogle. Para funcionar, é necessário instalar o shindig (recomendo a versão php que é mais fácil). Instalado o shindig, copiar a pasta robson para o diretório \shindig\javascript e chame via browser http://shindig/gadgets/files/robson/test-robson.html

- Pasta exemplo: contém um arquivo xml usado para funcionar um aplicativo no orkut, tanto visão canvas, quanto profile. Além disso, tem alguns exemplos de requests de dados em javascript. É necessário fazer upload para um hosting e ter acesso via sandbox, caso queira modificar e mexer.

Caso você não possua um hosting, pode usar a versão do Opensocial-BR, disponível em http://www.opensocial-br.org/exemplo/opensocialbr.xml . Acessando o sandbox do Orkut, clique no botão editar na esquerda (menu de aplicativos); vai habilitar uma caixa de texto para que você digite a url do aplicativo.

Outras informações:

Para finalizar, há o grupo de discussão Opensocial-GTUG, Brasil que conta com um grupo de pessoas que trabalham com a tecnologia e podem ajudar em caso de dúvidas.

Até a próxima!

23Feb/100

Primeiro evento técnico do SP-GTUG – dia 03/03/2010 na GlobalCode

Depois de um longo tempo parado, começamos um movimento forte para aquecer o GTUG de São Paulo novamente.

Conversando com o pessoal do grupo, resolvemos montar um primeiro evento técnico, com a presença da comunidade e que inicialmente focará Opensocial e AdWords.

Sobre Opensocial, eu ( Robson Dantas ) serei o palestrante responsável, e tentarei, na medida do possível, cobrir alguns pontos chave da plataforma.

Eric Gomes, certificado Adwords, cobrirá a Api e algumas das boas práticas usadas.

Venha prestigiar esse pequeno encontro, e aproveite para conhecer os membros do grupo, além de aumentar seu networking.

O evento acontecerá na GlobalCode, no dia 03/03/2010 às 19:00 . Inscreva-se já !

Caso tenha alguma dúvida e/ou sugestão, não deixe de entrar em contato.