Skip to content

Resposta da Autenticação

Após o usuário realizar o login com suas credenciais, ele será redirecionado para a URI informada na requisição. Casos de falha também serão redirecionados para o endereço informado. Em ambos os casos, informações adicionais serão enviadas via query string.

Caso de Sucesso

Em caso de sucesso, o usuário será redirecionado para a URI informada, com o código de autorização (Authorization Code) informado no formato de query string:

https://exemplo.com.br/callback?code=50b98752-ac5e-4bf3-a59b-7456f9f58685

Se você incluiu o parâmetro state na requisição, ele será retornado:

https://exemplo.com.br/callback?code=50b98752-ac5e-4bf3-a59b-7456f9f58685&state=af0ifjsldkj

Em caso de sucesso, o fluxo deve continuar para a etapa de troca de token, onde o Authorization Code recebido deverá ser informado na comunicação em back-channel (servidor para servidor), para fins de segurança.

Caso de Falha

Em caso de falha, o usuário será redirecionado para a URI informada, com os parâmetros a respeito do erro ocorrido informados no formato de query string:

https://exemplo.com.br/callback?error=unauthorized_client&error_description=The Client ID informed by the client is not valid.&error_uri=https://faq.xxxid.com.br/erro

Parâmetros de Erro

ParâmetroDescrição
errorCódigo do erro
error_descriptionDescrição detalhada do erro
error_uriURI com mais informações sobre o erro

Possíveis Erros

  • unauthorized_client: O Client ID informado não é válido
  • invalid_request: A URI informada não corresponde a nenhuma das URIs registradas do Cliente
  • invalid_request: O uso da propriedade id_token_hint requer que o valor de prompt seja definido como 'none'

Validação do State

Se você incluiu o parâmetro state na requisição, sempre valide se o valor retornado corresponde ao valor enviado. Isso ajuda a prevenir ataques CSRF.

Exemplo de Implementação

javascript
const urlParams = new URLSearchParams(window.location.search);
const code = urlParams.get('code');
const error = urlParams.get('error');
const state = urlParams.get('state');

if (error) {
  console.error('Erro na autenticação:', error);
  const errorDescription = urlParams.get('error_description');
  console.error('Descrição:', errorDescription);
} else if (code) {
  if (state && state !== sessionStorage.getItem('oauth_state')) {
    console.error('State não corresponde - possível ataque CSRF');
    return;
  }
  trocarCodigoPorToken(code);
}

Próximo Passo

Após receber o código de autorização, continue para Endpoint de Tokens.

Documentação da API Fanbase