introdução a plataforma de aplicativos redu

30
Plataforma de Aplicativos 101 Guilherme Cavalcanti Líder técnico, plataforma de aplicativos

Upload: guilherme

Post on 22-Jun-2015

6.172 views

Category:

Education


5 download

DESCRIPTION

Slides do workshop sobre construção de aplicativos educacionais utilizando o Redu (http://www.redu.com.br) como plataforma.

TRANSCRIPT

Page 1: Introdução a plataforma de aplicativos Redu

Plataforma de Aplicativos101

Guilherme CavalcantiLíder técnico, plataforma de aplicativos

Page 2: Introdução a plataforma de aplicativos Redu

Apresentações

• Guilherme Cavalcanti

• Desenvolvedor Web desde 2007

• Granduando, CIn-UFPE

• Co-fundador do Redu

• Líder técnico do time da plataforma de aplicativos @ Redu

• Twitter/Delicious/Github:

• /guiocavalcanti

Page 3: Introdução a plataforma de aplicativos Redu

Equipe

• 15 pessoas

• Designers

• Desenvolvedores

• Pesquisadores

• Negócio

Estamos [email protected]

Page 4: Introdução a plataforma de aplicativos Redu

O que é a plataforma de aplicativos?

Page 5: Introdução a plataforma de aplicativos Redu

Mercado de educação

• Editoras

• Produtoras de mídias educativas

• Sistemas de Gestão Acadêmica

• Marketplace de aplicativos educacionais

Page 6: Introdução a plataforma de aplicativos Redu

Importância da disciplina

1. Necessidade de integração de tecnologias

2. Demanda por desenvolvedores de aplicativos educacionais

Page 7: Introdução a plataforma de aplicativos Redu

Tipo de aplicativos

• Canvas

• Externos

• Mobile, desktop, etc

• Plugins sociais

Page 8: Introdução a plataforma de aplicativos Redu

Canvas

Page 9: Introdução a plataforma de aplicativos Redu

Canvas

• Funciona dentro do Redu

• Like facebook apps

• Para o usuário final, faz parte do Redu

Page 10: Introdução a plataforma de aplicativos Redu

Principais funcionalidades

Page 11: Introdução a plataforma de aplicativos Redu

Sugestões de aplicativos

Page 12: Introdução a plataforma de aplicativos Redu

Infraestrutura

• Se comunica com o Redu via HTTP (API REST)

• As simple as an <iframe>

• Plugins sociais (em breve)

• SDK JavaScript (em breve)

• Redu Bootstrap (alpha)

Page 13: Introdução a plataforma de aplicativos Redu

Mais informações

• Vai ficar dentro da Disciplina

• Largura máxima de 720px

• Autenticação via JavaScript (OAuth2)

• Requisições cross-domain permitidas (CORS)

• Inicialmente compatível apenas com FF e Chrome (versões recentes)

Page 14: Introdução a plataforma de aplicativos Redu

Aplicativos externos

Page 15: Introdução a plataforma de aplicativos Redu

Aplicativos externos

• Mobile: aplicativos Android, iOS

• Plugins sociais: mural, meus cursos

• Aplicativos desktop

• Sistema de gestão acadêmica

• ERPs

• Analytics services

• Games

Page 16: Introdução a plataforma de aplicativos Redu

Infraestrutura

• Se comunica com o Redu via HTTP (API REST)

• SDKs e wrappers a serem construídos

Page 17: Introdução a plataforma de aplicativos Redu

O que temos pronto?

Page 18: Introdução a plataforma de aplicativos Redu

API REST

• Plain old HTTP

• 100% documentada

• Autenticação por OAuth2

Page 19: Introdução a plataforma de aplicativos Redu

API REST

Page 20: Introdução a plataforma de aplicativos Redu

WTH: API

...is a specification intended to be used as an interface by software components to

communicate with each other.

Someone at Wikipedia

Page 21: Introdução a plataforma de aplicativos Redu

WHT: REST

• Estilo arquitetural para sistemas distribuidos

• Levado em conta na construção da World Wide Web

• Amplamente utilizado em Webservices públicos

• Roy Fielding

Page 22: Introdução a plataforma de aplicativos Redu

WHT: REST

• Client-server: separação de responsabilidades

• Stateless: escalabilidade

• Uniform inteface: portabilidade

Page 23: Introdução a plataforma de aplicativos Redu

Documentação

• Disponível em developers.redu.com.br

• Open-source:

• https://github.com/redu/redu.github.com/

• Aceitamos correções

Page 24: Introdução a plataforma de aplicativos Redu

Content-type

• JSON

• XML (alguém precisa?)

• form-urlencoded

Page 25: Introdução a plataforma de aplicativos Redu

Autenticação

Page 26: Introdução a plataforma de aplicativos Redu

OAuth2

• Como descobrir quem fez qual requisição?

• OAuth2 Provider

• Tudo depende de um token

Page 27: Introdução a plataforma de aplicativos Redu

Papéis

Resource owner Usuário da aplicação

Client application Aplicação

Resource/authorization Server

Redu

Page 28: Introdução a plataforma de aplicativos Redu

OAuth2 : regras

1. Client applications atuam (role play) em nome do resource owner

2. Client applications não guardam login e senha do resource owner

3. Client applications pedem autorização para atuar em nome do resource owner

Page 29: Introdução a plataforma de aplicativos Redu

Pedindo seu token em Python

1 from rauth.service import OAuth2Service 2 4 redu = OAuth2Service( 5 name='redu', 6 authorize_url='http://redu.com.br/oauth/authorize', 7 access_token_url='http://redu.com.br/oauth/token', 8 consumer_key='YF6tokenI45Z2tokenk9ttokenoDmCBH', 9 consumer_secret='kMkrtokenhfoMHLZOtokenCGAZRZtoken')10 11 print 'Visit this URL in your browser: ' + redu.get_authorize_url()12 16 code = raw_input('Enter the PIN: ')17 19 data = dict(code=code, grant_type='authorization_code',redirect_uri='')2023 access_token = redu.get_access_token('POST', data=data)25 26 print 'The access token is: ' + access_token[access_token]

https://github.com/redu/oauth-consumers

Page 30: Introdução a plataforma de aplicativos Redu

Pedindo seu token em Ruby

3 require "oauth2" 4 5 consumer_key ='YF6btoken3jek9tRbGptokenCBH' 6 consumer_secret ='kMkrBKyadsMHLZO3MBdasZRZEdasL' 7 8 client = OAuth2::Client.new(consumer_key, consumer_secret,10 :site => 'http://redu.com.br')11 12 puts "Already have a PIN? [y/n]:"13 if gets.chomp == 'n'14 puts "Authorize: "15 puts client.auth_code.authorize_url16 end17 18 puts "Insert the pin: "19 pin = gets.chomp20 token = client.auth_code.get_token(pin)21 puts "The Access Token is #{token.token}"

https://github.com/redu/oauth-consumers