Autenticação¶
1 | |
Criar Usuário com Email e Senha¶
mutation {
createPasswordUser(
user: {
displayName: "Usuário Exemplo"
email: "email@gmail.com"
password: "123456"
}
url: "https://mysite.com/user_profile"
iOS: {
bundleId: "com.farias_brito.app_simulados.ios"
}
android: {
packageName: "com.farias_brito.app_simulado"
installApp: true
minimumVersion: "1.0.2"
}
) {
uid
displayName
email
emailVerified
customToken
customClaims {
role
}
}
}
-
Criar um Usuário que faz Login com Email e Senha:
-
Retorna todos os dados disponíveis do Usuário
-
Envia Email de confirmação para o Email do Usuário
- Qualquer verificação de Autenticação irá falhar caso o Email dele não esteja verificado
- Os campos
iOS,androideurlsão utilizados para definir para onde o Usuário vai ser redirecionado após confirmação de Email
Campos de Redirecionamento (iOS/Android/Web)
Usar esses campos de acordo com a origem do App do Usuário sendo utilizado para dar informação do App para a API, assim o Usuário irá ser redirecionado de volta para o App/Site após criar sua conta.
android: { # Nome do pacote do App Android a ser aberto packageName: "com.farias_brito.app_simulado" # Procurar App na Playstore caso Usuário não o tenha baixado installApp: true # Versão mínima a ser utilizada, irá pedir para # o Usuário atualizar o app na Playstore caso a dele # seja inferior a versão passada aqui minimumVersion: "1.0.2" }iOS: { # ID do Bundle do App iOS bundleId: "com.farias_brito.app_simulados.ios" }# URL para redirecionar o Usuário após criação de conta url: "https://mysite.com/user_profile" -
-
Um campo adicional
customClaimsseria criado e retornado também, ele é um objeto contendo o camporole, que é o campo de Cargo do Usuário, usado para definição de permissões{ "customClaims": { "role": "user" } }{ "customClaims": { "role": "admin" } } -
Um campo
customTokenserá retornado com os dados do Usuário, utilizado para uniciar uma sessão pelo firebase-client. Ler Mais.try { firebase.auth().signInWithCustomToken(user.customToken) } catch (error) { const errorCode = error.code; const errorMessage = error.message; } -
Mensagens de Erro:
-
Mensagens de Erro podem normalmente ser passadas diretamente para um alerta para o Usuário, visto que elas virão do Firebase e são traduzidas, exemplo:
{ "errors": [ { "message": "O e-mail fornecido já está em uso.", "locations": [ { "line": 2, "column": 3 } ], "path": [ "createPasswordUser" ] } ], "data": { "createPasswordUser": null } }
-
-
Email de Confirmação Padrão do Firebase

Login de Usuário com Email e Senha¶
mutation {
loginPasswordUser(email: "email@gmail.com", password: "123456") {
_id
uid
email
emailVerified
stsTokenManager {
accessToken
refreshToken
expirationTime
apiKey
}
}
}
-
Login com Email e Senha:
-
Retorna informações sobre Tokens de Autenticação, para serem usados nos Headers de Autorização
{ "stsTokenManager": { "accessToken": "eyJhbGciOiJSUzI1Ni (...)", "refreshToken": "AEu4IL0ojlzj4t (...)", "expirationTime": "1575485599954", "apiKey": "AIzaSyBSd7MN5HzoL_Z4Nhiybwg8sivV9GupkQ4" } }
accessTokenToken de acesso de AutenticaçãoExpiram após 1 hora depois de serem criados
refreshTokenToken de refresh de AutenticaçãoUtilizado para gerar um novo
accessToken, não expira a não ser que o Usuário seja desabilitado, é usado da seguinte forma:mutation { # Passar refreshToken como 'token' refreshIdToken(token: "AEu4IL2dnPWqC (...)") { tokenType idToken userId expiresIn projectId refreshToken } }expirationTimeTempo até oaccessTokenexpirarEle é uma
stringe nãointpor Limitações do GraphQL> const expirationTime = "1575485599954" > const date = new Date(Number.parseInt(expirationTime)) > date 2019-12-04T18:53:19.954Z -
Dados do Usuário atualmente autenticado¶
campo historicoAproveitamento deprecado (v1.0.1)
Utilizar o Query historicoAproveitamento no lugar
-
Retorna dados do Usuário atualmente logado, requer
accessTokenpresente nos Headers de Autorização, pode retornar também dados do Histórico de Aproveitamento de Simulados do Usuárioquery { currentUser { uid email historicoAproveitamento { createdAt updatedAt materias { updatedAt createdAt nome aproveitamento acertos total erros } } } }{ "data": { "currentUser": { "uid": "COoq3Gu9dmWWFfao8eelXjs1Hf62", "email": "email@gmail.com", "historicoAproveitamento": { "createdAt": "1581963085536", "updatedAt": "1581963085536", "materias": [ { "updatedAt": null, "createdAt": "1581963085535", "nome": "Biologia", "aproveitamento": 0, "acertos": 0, "total": 0, "erros": 0 }, { "updatedAt": null, "createdAt": "1581963085535", "nome": "Espanhol", "aproveitamento": 0, "acertos": 0, "total": 0, "erros": 0 }, { "updatedAt": null, "createdAt": "1581963085535", "nome": "Filosofia", "aproveitamento": 0, "acertos": 0, "total": 0, "erros": 0 }, { "updatedAt": "1581963085535", "createdAt": "1581963085535", "nome": "Física", "aproveitamento": 100, "acertos": 5, "total": 5, "erros": 0 }, { "updatedAt": null, "createdAt": "1581963085535", "nome": "Geografia", "aproveitamento": 0, "acertos": 0, "total": 0, "erros": 0 }, { "updatedAt": "1581963085535", "createdAt": "1581963085535", "nome": "História", "aproveitamento": 25, "acertos": 5, "total": 20, "erros": 15 }, { "updatedAt": null, "createdAt": "1581963085535", "nome": "Inglês", "aproveitamento": 0, "acertos": 0, "total": 0, "erros": 0 }, { "updatedAt": "1581963085535", "createdAt": "1581963085535", "nome": "Matemática", "aproveitamento": 50, "acertos": 5, "total": 10, "erros": 5 }, { "updatedAt": null, "createdAt": "1581963085535", "nome": "Português", "aproveitamento": 0, "acertos": 0, "total": 0, "erros": 0 }, { "updatedAt": null, "createdAt": "1581963085536", "nome": "Química", "aproveitamento": 0, "acertos": 0, "total": 0, "erros": 0 }, { "updatedAt": null, "createdAt": "1581963085536", "nome": "Sociologia", "aproveitamento": 0, "acertos": 0, "total": 0, "erros": 0 } ] } } } }
Reset de Senha de Usuário¶
mutation {
sendPasswordResetEmail(
email: "johnvictorfs@gmail.com"
url: "https://mysite.com/login"
iOS: {
bundleId: "com.farias_brito.app_simulados.ios"
}
android: {
packageName: "com.farias_brito.app_simulado"
installApp: true
minimumVersion: "1.0.2"
}
)
}
- Envia Email para Usuário reiniciar Senha, não requer Autenticação
- Campos
url,iOSeandroidfuncionam da mesma forma que os mesmos campos de Confirmação de Email

Usuários de Redes Sociais¶
-
Após realizar Cadastro de Conta utilizando Redes sociais, um
idTokenserá retornado, esseidTokendeverá ser usado como Token de autenticação nos Headers de Autorização para usar na API. -
Após a criação de um Usuário usando Rede Social pelo Firebase, será necessário enviar uma Mutation para a API, para poder salvar o Usuário no banco de dados da API
mutation { saveSocialMediaUser } -
Passar
idTokennos Headers de Autorização{"authorization": "eyJhbGciOiJSUzI1Ni (...)"}
Re-enviar Email de Confirmação¶
mutation {
resendConfirmationEmail(
email: "email@gmail.com"
password: "123456"
url: "https://mysite.com/login"
iOS: {
bundleId: "com.farias_brito.app_simulados.ios"
}
android: {
packageName: "com.farias_brito.app_simulado"
installApp: true
minimumVersion: "1.0.2"
}
)
}
- Não requer Token de Autorização, irá utilizar as credenciais passadas (
emailepassword) para realizar a Autenticação, irá enviar o mesmo Email enviado ao Criar um Usuário com Senha e faz uso dos mesmos campos da mesma forma
Atualizar Dados de Usuário¶
mutation {
updateUser(user: { displayName: "Usuário Teste Updated" }) {
uid
displayName
email
emailVerified
}
}
{"authorization": "eyJhbGciOiJSUzI1Ni (...)"}
{
"data": {
"updateUser": {
"uid": "COoq3Gu9dmWWFfao8eelXjs1Hf62",
"displayName": "Usuário Teste Updated",
"email": "test@gmail.com",
"emailVerified": true
}
}
}
- Requer Token de Acesso nos Headers de Autorização
- Campos que podem ser atualizados por essa Mutation:
displayName,photoURLephoneNumber