FIXME Esta documentação está incompleta.
====== Solicitação de aplicação (usuário) ======
Usuário deverá acessar o menu Tecnologia da Informação :: API (OAuth2) :: Minhas Solicitações de Aplicação e preencher os dados da aplicação para solicitar acesso.
Após o deferimento do acesso o usuário verá sua aplicação em Tecnologia da Informação :: API (OAuth2) :: Minhas Aplicações, onde poderá verificar o token de acesso.
{{ :sistemas:suap:programacao:suap_api_detalhes_aplicacao.jpg?nolink&600 |}}
====== Liberação de acesso (DGTI) ======
Permissão necessária para realizar deferimento: Administrador de API
O usuário com perfil faz o deferimento através do menu Tecnologia da Informação :: API (OAuth2) :: Minhas Solicitações de Aplicação. Após realizar o deferimento a aplicação ainda fica com status inativa, sendo necessário editar os dados e marcar a opção ativa.
====== Instruções de uso ======
===== Fluxo =====
- Logar com SUAP via OAuth2
- Consumir API (via OAuth2) obtendo recursos em nome do usuário
===== Exemplo genérico =====
curl
===== Exemplo em Python/Django =====
class SuapOAuth2(BaseOAuth2):
name = 'suap'
AUTHORIZATION_URL = 'https://suap.ifce.edu.br/o/authorize/'
ACCESS_TOKEN_METHOD = 'POST'
ACCESS_TOKEN_URL = 'https://suap.ifce.edu.br/o/token/'
ID_KEY = 'identificacao'
RESPONSE_TYPE = 'code'
REDIRECT_STATE = True
STATE_PARAMETER = True
USER_DATA_URL = 'https://suap.ifce.edu.br/api/eu/'
def user_data(self, access_token, *args, **kwargs):
return self.request(
url=self.USER_DATA_URL,
data={'scope': kwargs['response']['scope']},
method='GET',
headers={'Authorization': 'Bearer {0}'.format(access_token)}
).json()
def get_user_details(self, response):
"""
Retorna um dicionário mapeando os fields do settings.AUTH_USER_MODEL.
você pode fazer aqui outras coisas, como salvar os dados do usuário
(`response`) em algum outro model.
"""
splitted_name = response['nome'].split()
first_name, last_name = splitted_name[0], ''
if len(splitted_name) > 1:
last_name = splitted_name[-1]
return {
'username': response[self.ID_KEY],
'first_name': first_name.strip(),
'last_name': last_name.strip(),
'email': response['email'],
}
===== Exemplo em JS =====
var CLIENT_ID = '';
var REDIRECT_URI = 'http://localhost:8888/';
var SUAP_URL = 'https://suap.ifce.edu.br';