2. 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
12. 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)
13. 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)
20. WTH: API
...is a specification intended to be used as
an interface by software components to
communicate with each other.
Someone at Wikipedia
21. 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
26. OAuth2
• Como descobrir quem
fez qual requisição?
• OAuth2 Provider
• Tudo depende de um
token
27. Papéis
Resource owner Usuário da aplicação
Client application Aplicação
Resource/authorization
Redu
Server
28. 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
29. 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='')
20
23 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
30. 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_url
16 end
17
18 puts "Insert the pin: "
19 pin = gets.chomp
20 token = client.auth_code.get_token(pin)
21 puts "The Access Token is #{token.token}"
https://github.com/redu/oauth-consumers