Skip to content
robsonximenes edited this page Jan 29, 2013 · 7 revisions

equizmo-ws

Este é um projeto de exemplo de como disponibilizar serviços SOAP e REST para as aplicações de exemplo iOS e Android;

Características

Projeto JEE 6 / Demoiselle. Hospedado na nuvem da RedHat OpenShift. Exposição de serviços SOAP e REST.

Acessando o projeto

O projeto está disponível em http://quiz-exmo.rhcloud.com/

Serviços

User

Web Services relacionados aos usuários do quiz. http://quiz-exmo.rhcloud.com/user?wsdl

Quiz

Web Services relacionados aos quiz. http://quiz-exmo.rhcloud.com/quiz?wsdl

Configurando o OpenShift

  1. Criar conta no openshift

  2. Criar app jboss as 7.1

    public URL http://ws-equizmo.rhcloud.com

  3. Criar uma chave pública

    ssh-keygen -t rsa -C "exmo.gov@gmail.com" gedit ./ssh/id_rsa.pub copia o texto e cola na página do openshift salva

  4. clonar o respositorio git

    git clone ssh://0adbad5017704587810ba91a454dd750@ws-equizmo.rhcloud.com/~/git/ws.git/

    cd ws

    git add . git commit -m 'starting app' git push

  5. instalar as ferramentas de gerenciamento da redhat

    https://openshift.redhat.com/community/developers/install-the-client-tools

    sudo apt-get install ruby-full rubygems git-core sudo gem install rhc

  6. clonar o respositorio do github e sincronizar

    git add . git commit -m 'comment here' git push (comita e starta o aplicativo)

Facebook

Aplicação de exemplo cliente deste servidor utilizando javascript api para Facebook. http://apps.facebook.com/equizmo

Autorizar o aplicativo

Considerando que no facebook já foi registrado um aplicativo, vamos utilizar oa Aplicativo ID.

No página /facebook/index.html criamos o script que fará o login:

  $(function(){
        FB.init({ apiKey: APP_ID,
          channelUrl : DOMAIN+'/facebook/channel.html',
          status     : true, // check login status
          cookie     : true, // enable cookies to allow the server to access the session
          xfbml      : true,  // parse XFBML
          frictionlessRequests: true
  });
        
  FB.getLoginStatus(function(response) {
	  console.log(response);
	  if (response.status === 'connected') {
          uid = response.authResponse.userID;
          accessToken = response.authResponse.accessToken;
          console.log('connected and allowed');
      } else if (response.status === 'not_authorized') {
          console.log('connected but not allowed');
          top.location.href = "https://www.facebook.com/dialog/oauth?client_id="+APP_ID+"&redirect_uri="+FIRST_PAGE+"&scope=email, user_about_me, publish_stream, publish_actions, manage_notifications";
      } else {
          console.log('isnt even logged in to Facebook');
          top.location.href = "https://www.facebook.com/dialog/oauth?client_id="+APP_ID+"&redirect_uri="+FIRST_PAGE+"+&scope=email, user_about_me, publish_stream, publish_actions, manage_notifications";
      }
  });

No primeiro if temos o usuário já conectado e autorizado pelo facebook. A partir dai podemos buscar informações do usuário.

Dados do usuário

Podemos buscar os dados do usuario passando o uid (identificação do usuario proveniente do login)

    FB.api('/'+uid, function(r) {
    	name = r.name;
    	email = r.email;
});

Convidar amigos

Para convidar os amigos basta invocar a api apprequests

FB.ui({ method: 'apprequests', 
       message: 'Vamos exercitar a mente!'});

Publicar uma mensagem na timeline do usuario

A publicação na timeline precisa de uma confirmação do usuário. Agora ela utiliza um recurso chamado de feed dialog.

FB.ui({ method: 'feed', 
        message: scoreMessage,
        description: scoreMessage,
        caption: FIRST_PAGE,
        link: FIRST_PAGE
    });