Académique Documents
Professionnel Documents
Culture Documents
br
Utilizando o protocolo OAuth 2.0
Este documento descreve como utilizar o protocolo oAuth 2.0 como forma de autenticao na
APIolx.com.bratravsdeumaaplicao web.
OAuth 2.0 um protocolo relativamente simples. No incio, voc registra sua aplicao no
olx.com.br, depois a aplicao solicita uma chave de acesso ao servidor de autenticao do
olx.com.br e ento utiliza essa chave para receber as informaes de um recurso da API
olx.com.brquedesejaacessar.
1.Registrodaaplicao
2.Sequnciadeautorizao
2.1.Cdigodeautenticao
2.1.1.Requisiodocdigodeautenticao
2.1.1.1.Permisses
2.1.2.Respostadarequisio
2.1.2.1.Confirmaodaautorizao
2.1.2.2.Errosdeautenticao
2.2.Chavedeacesso
2.2.1.Requisiodachavedeacesso
2.2.2.Respostaderequisio
2.2.2.1.Respostabemsucedida
2.2.2.2.Respostadeerro
3.APIolx.com.br
3.1AcessoaAPI
3.2Referncia
3.2.1basic_user_info
3.2.2autoupload
4.Exemplodeutilizao
5.Referncias
Nomedocliente
Nomedaaplicao
Descriodaaplicao
Website
Telefone
Email
URIs de redirecionamento (identifica um endpoint do cliente que ser alvo de
redirecionamentonoprocessodeautenticaomnimo1emximo3ver seo2.1)
Aps receber os dados, o olx.com.br entrar em contato com o cliente para fornecer sua
lient_id e sua chave de segurana, necessrios para iniciar a sequncia de
identificao c
autorizao.
Aps o cliente registrar sua aplicao no olx.com.br e obter sua identificao (client_id), ser
possveldarincioasequnciadeautorizao.
A sequncia de autorizao tem incio quando a aplicao redireciona o navegador para uma
URLdoolx.com.br.NestaURLseroincludosalgunsparmetrosqueindicamotipodeacesso
que est sendo requerido. O olx.com.br o responsvel pela autenticao do usurio e por
confirmar a permisso de acessoasuasinformaes erecursos.Comoresultado,o olx.com.br
retorna para a aplicao um cdigo de autorizao. Aps receber o cdigo de autorizao a
aplicao poder forneclo (junto com sua identificao e senha) para obter em troca uma
chave de acesso. A aplicao poder ento utilizar essa chave de acesso para acessar a API
olx.com.br .
Este cdigo dever ser utilizado logo em seguida para solicitar a chave de acesso que, caso
seja aceita pelo usurio, permitir o cliente a acessar suas informaes atravs da API
olx.com.br.Ocdigodeautenticaotemporrioenopodeserreutilizado.
2.1.1.
AURLusadaparaautenticarumusurioser
https://auth.olx.com.br/oauth
(obrigatrio)
client_id Aidentificaodocliente Identificaoclientequeestenviandoa
quefoifornecidapelo requisio.Ovalordoparmetrotemqueser
olx.com.bratravsdo idnticoaovalorfornecidopeloolx.com.br
registrodaaplicao. duranteoregistrodaaplicao.
(obrigatrio)
scope Conjuntodepermisses IdentificaotipodeacessoaAPIolx.com.br
queaaplicaosolicita, queaaplicaoestrequisitando.Osvalores
separadasporespao, passadosnesteparmetroseroosmesmos
Um exemplo de URL apresentado abaixo com espaos e quebras de linha para maior
legibilidade.
https://auth.olx.com.br/oauth?scope=basic_user_info&state=/profile&redirect_uri=https:
//yourserver.com/code&response_type=code&client_id=
1055d3e698d289f2af8663725127bd4b
2.1.1.1. Permisses
O valor parmetro s cope expressado como uma lista de valores ( case sensitive
) separados
porespaos,noimportandoaordem.
Segueabaixoalistadospossveisvaloresdepermissoquepodemsersolicitadasaousurio:
Valor Descrio
basic_user_inf Permiteacessoasinformaesbsicasdousurio.Ex:nomecompletoeemail.
o
(obrigatrio)
code Cdigodeautorizao Cdigodeautorizaoutilizadoparasolicitar
geradopeloservidorde permissodeacessoarecursosdeumusurio.
autenticao. Expira10minutosapstersidogeradoenopode
serreutilizado.
(obrigatrio
state Mesmovalorenviadopelo Fornecequalquervalorquepodesertilaaplicao
seestevepresente clientenarequisio. aoreceberarespostaderequisio.
narequisio)
Exemploderespostadeconfirmao:
https://yourserver.com/code?state=/profile&code=4gP7q7W91aoMsCeLvIaQm6bTrgtp7
Caso a URI passada seja diferente de uma das registradas no olx.com.br, o servidor de
autenticaorespondercomumHTTP400( BadRequest) .
Segue abaixo a lista dos parmetros para erros de autenticao retornados pelo servidor de
autenticao:
(obrigatrio)
error invalid_request Arequisiotemparmetroobrigatriofaltando,
incluiumparmetroinvlidoouestmal
unauthorized_client Oclientenoestautorizadoarequisitarum
cdigodeautorizaousandoestemtodo.
access_denied Ousurioouservidordeautenticaonegoua
requisio.
unsupported_response_type Oservidordeautenticaonosuportaobter
umcdigodeautorizaoutilizandoeste
mtodo.
invalid_scope Apermissosolicitadainvlida,desconhecida
oumalformatada.
temporarily_unavailable Nomomentooservidordeautenticaoest
indisponvelparareceberrequisiesdevidoa
umamanutenoousobrecargatemporria.
server_error Oservidordeautenticaoencontrouuma
condioinesperadaqueimpossibilitoua
finalizaodarequisio.
Exemploderespostadeerro:
https://yourserver.com/code?error=access_denied&state=/profile
AURLusadaparasolicitarachavedeacessoser
https://auth.olx.com.br/oauth/token
Aps receber o cdigo de autorizao, o cliente poder trocalo por uma chave de acesso
atravs de uma nova requisio. Esta requisio dever ser um post HTTPS e conter os
seguintesparmetros:
code(obrigatrio) Ocdigodeautorizao Cdigodeautorizaoutilizadoparasolicitar
retornadonarequisio permissodeacessoarecursosdeum
anterior. usurio.Expira10minutosapstersido
geradoenopodeserreutilizado.
client_id(obrigatrio) Aidentificaodocliente Identificaoclientequeestenviandoa
quefoifornecidapelo requisio.Ovalordoparmetrotemqueser
olx.com.bratravsdo idnticoaovalorfornecidopeloolx.com.br
registrodaaplicao. duranteoregistrodaaplicao.
client_secret Achavedesegurana Achavedeseguranadoclienteobtidano
(obrigatrio) enviadapeloolx.com.br registrodaaplicaonoolx.com.br.
duranteoregistroda
aplicao.
(obrigatrio
redirect_uri Mesmovalorenviado Determinaparaqualservidorarespostada
seenviadonarequisiodo atravsdoparmetro requisioserenviada.
cdigodeautorizao) redirect_uri na
requisiodocdigode
autorizao.
(obrigatrio)
grant_type authorization_code Identificaaformacomooclienteobteve
autorizaoparasolicitarachavedeacesso.
Segueabaixoumexemploderequisiodechavedeacesso:
POST/oauth/tokenHTTP/1.1
Host:auth.olx.com.br
ContentType:application/xwwwformurlencoded
code=4/P7q7W91aoMsCeLvIaQm6bTrgtp7&
client_id=
1055d3e698d289f2af8663725127bd4b
&
client_secret={sua_chave_de_segurana}&redirect_uri=https://yourserver.com/code&
grant_type=authorization_code
Segue abaixo um exemplo de resposta bem sucedida em formato JSON retornada pelo
servidordeautenticao:
HTTP/1.1200OK
ContentType:application/jsoncharset=UTF8
CacheControl:nostore
Pragma:nocache
{
"access_token":"1/fFAGRNJru1FTz70BzhT3Zg",
"token_type":"
Bearer
"
}
Bad Request)
O servidor de autenticao retorna um HTTP 400 ( e inclui um dos seguintes
valoresnaresposta:
invalid_grant Cdigodeautorizaoinvlido,expiradoourevogado,
URInoamesmaqueaURIusadanarequisiode
autorizaooufoiemitidoparaoutrocliente.
unauthorized_client Oclienteautenticadonoestautorizadoautilizar
rant_type
estetipodeautorizao(g ).
invalid_scope Asolicitaodepermissoenviadainvlido,
desconhecidaouexcedeaspermissesconcedidas
pelousurio.
Segueabaixoumexemploderespostadeerronarequisiodeumachavedeacesso:
HTTP/1.1400BadRequest
ContentType:application/jsoncharset=UTF8
CacheControl:nostore
Pragma:nocache
{
"error":"invalid_request"
}
Depois que a aplicao obtiver uma chave de acesso poder ento utilizar a API olx.com.br
paraacessarrecursosprivadosdeumdeterminadousurio.
POST/oauth_api/basic_user_infoHTTPS/1.1
Host:
apps
.olx.com.br
UserAgent:Mozilla/5.0
ContentType:application/jsoncharset=UTF8
{
"access_token":"
387266f574068c83f74942fe255e82261708f960
"
}
Ouutilizandoumaaplicaoporlinhadecomandocomo,porexemplo,oCURL:
curlXPOSThttps://apps.olx.com.br/oauth_api/basic_user_infodata
'{"access_token":"387266f574068c83f74942fe255e82261708f960"}'H'UserAgent:
Mozilla/5.0'
3.2 Referncia
AversoatualdaAPIOLXforneceacessoaosseguintesrecursos:
Recurso Descrio
basic_user_info Retornaumalistacomasinformaesbsicasdousurio.
autoupload Sistemadeenviodeannciosdeformaautomtica
3.2.1 basic_user_info
Acesso
POST/oauth_api/basic_user_infoHTTPS/1.1
Host:
apps
.olx.com.br
Permisses
Qualquerchavedeacessocomapermisso
basic_user_info.
Campos
Chamada
POST/oauth_api/basic_user_infoHTTPS/1.1
Host:
apps
.olx.com.br
ContentType:application/jsoncharset=UTF8
{
"access_token":"1/fFAGRNJru1FTz70BzhT3Zg"
}
Retorno
{
"user_name":"JosdaSilva",
"user_email":"
jose.silva@sample.com
"
}
3.2.2 autoupload
Sistemadeenviodeannciosdeformaautomtica.
Paramaisinformaes,consultaromanualdeAutouploaddoolx.com.br
<?php
#antesdeusarestescript,vocdeveregistrarsuaaplicaonaOLX
/*
*
* @client_id tokenfornecidopeloOLXquerepresentasuaaplicao
* @client_secrettokenfornecidopeloOLXquegaranteascredenciaisdasua
aplicao
*
*/
#utilizarseuclient_ideclient_secretfornecidopeloOLX
$client_id ='52e213308e9d882584498ed90074bba58250c54e'
$client_secret='db016607c4395f05df1eeb1f18e93ae2'
$response_type='code'
$scope ='basic_user_info'
$redirect_uri ='http://127.0.0.1/oauth.php'
$state ='bla'
$grant_type ='authorization_code'
$auth_host ='dev04c6.srv.office:22406'
$apps_host ='dev04c6.srv.office:22406'
$url =
"https://{$auth_host}/oauth?client_id={$client_id}&response_type={$response_type}&scope={$sc
ope}&redirect_uri={$redirect_uri}&state={$state}"
?>
<!RequisiodocdigodeautenticaoComoexplicadonaseo2.1.1doManualdoOAuth
>
<!Ousuriodeveclicarnolinkparainiciaro'oauthlogin'>
<ahref="<?phpecho$url?>">Fazerloginnoolx.com.br</a><br><br>
<!umavezclicado,ousuriodeverseautenticarnoOLXeautorizarasuaaplicaoa
acessarseusdados>
<?php
#issosdeveocorrerapsorecebimentodo'code'noredirectdooauth
if(isset($_GET['code'])){
$code=$_GET['code']
#dadosnecessriosparaarequisiodotokendeacesso
5. Referncias
[RFC6749]TheOAuth2.0AuthorizationFramework[http://tools.ietf.org/html/rfc6749
]
UsingOAuto2.0forWebServerApplications
[
https://developers.google.com/accounts/docs/OAuth2WebServer?hl=ptBR ]