Esta referência descreve os métodos e atributos do cliente JavaScript que você usará para implementar o Login do Google nos seus aplicativos da Web.
Se você encontrar algum problema ao usar a biblioteca, informe-o ao nosso repositório do GitHub.
Configuração de autenticação
Carregue a biblioteca da plataforma de APIs do Google para criar o objeto gapi
:
<script src="https://apis.google.com/js/platform.js?onload=init" async defer></script>
Depois que a biblioteca da plataforma for carregada, carregue a biblioteca auth2
:
function init() {
gapi.load('auth2', function() {
/* Ready. Make a call to gapi.auth2.init or some other API */
});
}
gapi.auth2.init(params)
Inicializa o objeto GoogleAuth
. Chame esse método antes de chamar os métodos de gapi.auth2.GoogleAuth
.
Ao inicializar o objeto GoogleAuth
, você configura o objeto com seu ID do cliente do OAuth 2.0 e as outras opções que quiser especificar. Em seguida, se o usuário já tiver feito login, o objeto GoogleAuth
restaurará o estado de login do usuário da sessão anterior.
Argumentos | |
---|---|
params |
Um objeto que contém pares de chave-valor de dados de configuração do cliente. Consulte
gapi.auth2.ClientConfig para as diferentes
propriedades configuráveis. Por exemplo:
{ client_id: 'CLIENT_ID.apps.googleusercontent.com' } |
Retorna | |
---|---|
gapi.auth2.GoogleAuth |
O objeto gapi.auth2.GoogleAuth . Use o método then() para receber uma promessa que é resolvida quando o objeto gapi.auth2.GoogleAuth termina de ser inicializado.
|
GoogleAuth.then(onInit, onError)
Chame a função onInit quando o objeto GoogleAuth
estiver totalmente
inicializado. Se um erro for gerado durante a inicialização (isso pode acontecer em navegadores antigos incompatíveis),
a função onError será chamada.
Argumentos | |
---|---|
onInit |
A função chamada com o objeto GoogleAuth quando ele está totalmente
inicializado.
|
onError |
A função chamada com um objeto que contém uma propriedade error ,
se GoogleAuth não for inicializado.
|
Retorna | |
---|---|
Promise | Um Promise que é atendido quando a função onInit
é concluída ou rejeitada se um erro de inicialização for gerado. Ele é resolvido com o valor retornado da função onInit, se houver. |
Códigos de erro
idpiframe_initialization_failed
-
Falha ao inicializar um iframe obrigatório do Google, por exemplo, devido a um ambiente
incompatível. Uma propriedade
details
fornecerá mais informações sobre o erro gerado.
gapi.auth2.ClientConfig.
Interface que representa os diferentes parâmetros de configuração para o
método gapi.auth2.init
.
Parâmetros | ||
---|---|---|
client_id |
string |
Obrigatório. O ID do cliente do app, encontrado e criado no Google Developers Console. |
cookie_policy |
string |
Os domínios em que os cookies de login serão criados. Um URI,
single_host_origin ou none . Se não for especificado, o padrão será single_host_origin . |
scope |
string |
Os escopos a serem solicitados, como uma string delimitada por espaço. Opcional se
fetch_basic_profile não estiver definido como falso. |
fetch_basic_profile |
boolean |
Buscar informações básicas de perfil dos usuários quando eles fizerem login. Adiciona "profile", "email" e "openid" aos escopos solicitados. Verdadeiro se não for especificado. |
hosted_domain |
string |
O domínio do G Suite a que os usuários precisam pertencer para fazer login. Isso
é suscetível a modificações feitas por clientes. Portanto, verifique a
propriedade do domínio hospedado do usuário retornado. Use GoogleUser.getHostedDomain() no cliente e a declaração hd no token de ID no servidor para verificar se o domínio é o esperado.
|
ux_mode |
string |
O modo de UX a ser usado no fluxo de login. Por padrão, ele abrirá o fluxo de consentimento em um pop-up. Os valores válidos são: popup e redirect . |
redirect_uri |
string |
Se estiver usando ux_mode='redirect' , esse parâmetro permitirá que você modifique a
redirect_uri padrão que será usada no final do fluxo de consentimento. O
redirect_uri padrão é o URL atual sem parâmetros de consulta e fragmento de
hash.
|
plugin_name |
string |
Opcional. Se esse valor for definido, os novos IDs de cliente criados antes de 29 de julho de 2022 poderão usar a biblioteca da Plataforma Google.
Por padrão, os IDs de cliente recém-criados agora não podem usar
a Biblioteca da Plataforma. Em vez disso, eles precisam usar a biblioteca mais recente do
Serviços de Identificação do Google. É possível escolher qualquer valor. Um nome descritivo, como
o do produto ou plug-in, é recomendado para facilitar a identificação.
Exemplo: plugin_name: 'YOUR_STRING_HERE'
|
Autenticação
GoogleAuth
é uma classe singleton que fornece métodos para permitir que o usuário faça login com uma Conta do Google, receba o status de login atual do usuário, receba dados específicos do perfil do usuário, solicite escopos adicionais e saia da conta atual.
gapi.auth2.getAuthInstance().
Retorna o objeto GoogleAuth
. É necessário inicializar o objeto GoogleAuth
com gapi.auth2.init()
antes de chamar esse método.
Retorna | |
---|---|
gapi.auth2.GoogleAuth |
O objeto gapi.auth2.GoogleAuth . Use esse objeto para chamar os métodos de gapi.auth2.GoogleAuth .
|
GoogleAuth.isSignedIn.get().
Retorna indicando se o usuário atual está conectado no momento.
Retorna | |
---|---|
Booleano |
true se o usuário estiver conectado, ou false se o usuário estiver desconectado ou o objeto GoogleAuth não for inicializado.
|
GoogleAuth.isSignedIn.listen(listener)
Detectar mudanças no estado de login do usuário atual.
Argumentos | |
---|---|
listener |
Uma função que usa um valor booleano. listen() transmite
true para essa função quando o usuário faz login e
false quando o usuário sai.
|
GoogleAuth.signIn().
Faz o login do usuário com as opções especificadas para gapi.auth2.init()
.
Retorna | |
---|---|
Promise | Uma Promise que é preenchida com a instância GoogleUser quando o usuário autentica e concede os escopos solicitados ou é rejeitada com um objeto que contém uma propriedade error se um erro ocorreu (veja os códigos de erro abaixo). |
Códigos de erro
Consulte os GoogleAuth.signIn(options)
.
GoogleAuth.signIn(options)
Faz o login do usuário usando as opções especificadas.
Argumentos | |
---|---|
options |
Você pode:
|
Retorna | |
---|---|
Promise | Uma Promise que é preenchida com a instância GoogleUser quando o usuário autentica e concede os escopos solicitados ou é rejeitada com um objeto que contém uma propriedade error se um erro ocorreu (veja os códigos de erro abaixo). |
Códigos de erro
popup_closed_by_user
- O usuário fechou o pop-up antes de concluir o fluxo de login.
access_denied
- O usuário negou a permissão aos escopos necessários.
immediate_failed
-
Nenhum usuário pode ser selecionado automaticamente sem a solicitação do fluxo de consentimento. Erro gerado ao
usar
signIn
com a opçãoprompt: 'none'
. Essa opção não deve ser necessária, porquegapi.auth2.init
fará login automaticamente o usuário se tiver feito login anteriormente durante uma sessão anterior.
gapi.auth2.SignInOptions.
Interface que representa os diferentes parâmetros de configuração para o
método GoogleAuth.signIn(options)
.
Parâmetros | ||
---|---|---|
prompt |
string |
Força um modo específico para o fluxo de consentimento. Opcional. Os valores possíveis são:
|
scope |
string |
Os escopos a serem solicitados, como uma string delimitada por espaço, sobre os escopos definidos nos parâmetros gapi.auth2.init . Opcional se fetch_basic_profile não estiver definido
como falso.
|
ux_mode |
string |
O modo de UX a ser usado no fluxo de login. Por padrão, ele abrirá o fluxo de consentimento em um pop-up. Os valores válidos são: popup e redirect . |
redirect_uri |
string |
Se você usar ux_mode='redirect' , esse parâmetro permitirá que você modifique
o redirect_uri padrão que será usado no final do fluxo de
consentimento. O redirect_uri padrão é o URL atual sem parâmetros de consulta e fragmento de hash.
|
GoogleAuth.signOut().
Desconecta a conta atual do aplicativo.
Retorna | |
---|---|
Promise | Um Promise que é atendido quando o usuário é desconectado. |
GoogleAuth.disconnect().
Revoga todos os escopos concedidos pelo usuário.
GoogleAuth.grantOffAccess(options)
Solicitar a permissão do usuário para acessar os escopos especificados off-line
Argumentos | |
---|---|
options |
Um objeto gapi.auth2.OfflineAccessOptions que contém pares de chave-valor de parâmetros. Por exemplo: { scope: 'profile email' } |
Retorna | |
---|---|
Promise | Um Promise que é preenchido quando o usuário concede os
escopos solicitados, transmitindo um objeto que contém o código de autorização para o
gerenciador de fulfillment do Promise .
Exemplo: auth2.grantOfflineAccess().then(function(resp) { var auth_code = resp.code; }); |
Códigos de erro
popup_closed_by_user
- O usuário fechou o pop-up antes de concluir o fluxo de consentimento.
access_denied
- O usuário negou a permissão aos escopos necessários.
immediate_failed
-
Nenhum usuário pode ser selecionado automaticamente sem a solicitação do fluxo de consentimento. Erro gerado ao
usar
signIn
com a opçãoprompt: 'none'
. Essa opção não deve ser necessária, porquegapi.auth2.init
fará login automaticamente o usuário se tiver feito login anteriormente durante uma sessão anterior.
gapi.auth2.OfflineAccessOptions
Interface que representa os diferentes parâmetros de configuração para o
método
GoogleAuth.grantOfflineAccess(options)
.
Parâmetros | ||
---|---|---|
prompt |
string |
Força um modo específico para o fluxo de consentimento. Opcional. Os valores possíveis são:
|
scope |
string |
Os escopos a serem solicitados, como uma string delimitada por espaço, sobre os escopos definidos nos parâmetros gapi.auth2.init . Opcional se fetch_basic_profile não estiver definido
como falso.
|
GoogleAuth.AttachClickHandler(container, options, onsuccess, onfailure)
Anexa o fluxo de login ao gerenciador de cliques do contêiner especificado.
Argumentos | |
---|---|
container | O ID ou uma referência ao elemento div a que o gerenciador de cliques será anexado. |
options | Um objeto que contém pares de chave-valor de parâmetros. Consulte GoogleAuth.signIn(). |
onsuccess | A função a ser chamada após a conclusão do login. |
onfailure | A função a ser chamada se o login falhar. |
Usuários
Um objeto GoogleUser
representa uma conta de usuário.
Os objetos GoogleUser
normalmente são obtidos chamando
GoogleAuth.currentUser.get().
GoogleAuth.currentUser.get().
Retorna um objeto GoogleUser
que representa o usuário atual. Observe que, em uma instância GoogleAuth
recém-inicializada, o usuário atual não foi definido. Use o
método currentUser.listen()
ou GoogleAuth.then()
para acessar uma instância GoogleAuth
inicializada.
Retorna | |
---|---|
GoogleUser |
O usuário atual |
GoogleAuth.currentUser.listen(listener)
Detectar mudanças em currentUser.
Argumentos | |
---|---|
listener |
Uma função que usa um parâmetro GoogleUser .
O listen transmite a essa função uma instância de GoogleUser
em cada mudança que modifica currentUser .
|
GoogleUser.getId()
Acessa a string de ID exclusiva do usuário.
Retorna | |
---|---|
String | ID exclusivo do usuário |
GoogleUser.isSignedIn().
Retornará "true" se o usuário tiver feito login.
Retorna | |
---|---|
Booleano | Verdadeiro se o usuário tiver feito login |
GoogleUser.getHostedDomain().
Tenha o domínio do G Suite do usuário se ele tiver feito login com uma conta do G Suite.
Retorna | |
---|---|
String | O domínio do G Suite do usuário |
GoogleUser.getGrantedScopes().
Acesse os escopos concedidos pelo usuário como uma string delimitada por espaço.
Retorna | |
---|---|
String | Os escopos concedidos pelo usuário |
GoogleUser.getBasicProfile().
Conseguir as informações básicas de perfil do usuário.
Retorna | |
---|---|
gapi.auth2.BasicProfile |
É possível recuperar as propriedades de gapi.auth2.BasicProfile
com os seguintes métodos:
|
GoogleUser.getAuthResponse(includeAuthorizationData)
Encontre o objeto de resposta da sessão de autenticação do usuário.
Argumentos | |
---|---|
includeAuthorizationData | Opcional:um booleano que especifica se é necessário sempre retornar um token de acesso e
escopos. Por padrão, o token de acesso e os escopos solicitados não são retornados quando
fetch_basic_profile é verdadeiro (o valor padrão) e nenhum outro escopo é
solicitado. |
Retorna | |
---|---|
gapi.auth2.AuthResponse |
Um objeto gapi.auth2.AuthResponse . |
GoogleUser.reloadAuthResponse()
Força uma atualização do token de acesso e, em seguida, retorna uma promessa para o novo AuthResponse.
Retorna | |
---|---|
Promise |
Um Promise que é atendido com o gapi.auth2.AuthResponse recarregado ao recarregar o token OAuth é concluído.
|
gapi.auth2.AuthResponse
A resposta retornada ao chamar os métodos
GoogleUser.getAuthResponse(includeAuthorizationData)
ou
GoogleUser.reloadAuthResponse()
.
Propriedades | ||
---|---|---|
access_token |
string |
O token de acesso concedido. |
id_token |
string |
O token de ID foi concedido. |
scope |
string |
Os escopos concedidos no token de acesso. |
expires_in |
number |
O número de segundos até o token de acesso expirar. |
first_issued_at |
number |
É o carimbo de data/hora em que o usuário concedeu os escopos solicitados pela primeira vez. |
expires_at |
number |
O carimbo de data/hora em que o token de acesso expira. |
GoogleUser.hasGrantedScopes(scopes)
Retorna "true" se o usuário concedeu os escopos especificados.
Argumentos | |
---|---|
scopes | Uma string de escopos delimitada por espaço. |
Retorna | |
---|---|
Booleano | Verdadeiro se os escopos foram concedidos |
GoogleUser.grant(options)
Solicite escopos adicionais ao usuário.
Consulte GoogleAuth.signIn()
para ver a lista de parâmetros e o código de erro.
GoogleUser.grantOffAccess(options)
Solicitar a permissão do usuário para acessar os escopos especificados off-line
Argumentos | |
---|---|
options |
Um objeto gapi.auth2.OfflineAccessOptions que contém pares de chave-valor de parâmetros. Por exemplo: { scope: 'profile email' } |
GoogleUser.disconnect().
Revoga todos os escopos concedidos pelo usuário ao app.
Elementos da IU
gapi.signin2.render(id, options)
Renderiza um botão de login no elemento com o ID fornecido, usando as configurações especificadas pelo objeto options.
Argumentos | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | É o ID do elemento em que o botão de login vai ser renderizado. | ||||||||||||||||
options |
Um objeto que contém as configurações a serem usadas para renderizar o botão. Por exemplo:
{ scope: 'email', width: 200, height: 50, longtitle: true, theme: 'dark', onsuccess: handleSuccess, onfailure: handleFailure }Você pode especificar as seguintes opções:
|
Avançado
gapi.auth2.authorized(params, callback);
Executa uma autorização OAuth 2.0 única. Dependendo dos parâmetros usados, um pop-up será aberto no fluxo de login do Google ou a tentativa de carregar a resposta solicitada de forma silenciosa, sem interação do usuário.
Estes são alguns casos de uso:
- Seu aplicativo só precisa solicitar um endpoint da API do Google uma vez. Por exemplo, para carregar os vídeos favoritos do YouTube do usuário na primeira vez que ele fizer login.
- O aplicativo tem a própria infraestrutura de gerenciamento de sessões e só exige o token de ID uma vez para identificar o usuário no back-end.
- Vários IDs de cliente são usados na mesma página.
Argumentos | |
---|---|
params |
Um objeto que contém pares de chave-valor de dados de configuração. Consulte
gapi.auth2.AuthorizeConfig para as
diferentes propriedades configuráveis. Por exemplo:
{ client_id: 'CLIENT_ID.apps.googleusercontent.com', scope: 'email profile openid', response_type: 'id_token permission' } |
callback |
Uma função chamada com um
objeto gapi.auth2.AuthorizeResponse
após a conclusão da solicitação (seja bem-sucedida ou com falha).
|
Exemplo
gapi.auth2.authorize({
client_id: 'CLIENT_ID.apps.googleusercontent.com',
scope: 'email profile openid',
response_type: 'id_token permission'
}, function(response) {
if (response.error) {
// An error happened!
return;
}
// The user authorized the application for the scopes requested.
var accessToken = response.access_token;
var idToken = response.id_token;
// You can also now use gapi.client to perform authenticated requests.
});
Códigos de erro
idpiframe_initialization_failed
-
Falha ao inicializar um iframe obrigatório do Google, por exemplo, devido a um ambiente
incompatível. Uma propriedade
details
fornecerá mais informações sobre o erro gerado. popup_closed_by_user
- O usuário fechou o pop-up antes de concluir o fluxo de login.
access_denied
- O usuário negou a permissão aos escopos necessários.
immediate_failed
-
Nenhum usuário pode ser selecionado automaticamente sem a solicitação do fluxo de consentimento. Erro gerado ao
usar
signIn
com a opçãoprompt: 'none'
.
gapi.auth2.AuthorizeConfig
Interface que representa os diferentes parâmetros de configuração para o
método gapi.auth2.authorize
.
Propriedades | ||
---|---|---|
client_id |
string |
Obrigatório. O ID do cliente do app, encontrado e criado no Google Developers Console. |
scope |
string |
Obrigatório. Os escopos a serem solicitados, como uma string delimitada por espaço. |
response_type |
string |
Lista de respostas delimitadas por espaços. O valor padrão é 'permission' . Os valores
possíveis são:
|
prompt |
string |
Força um modo específico para o fluxo de consentimento. Os valores possíveis são os seguintes:
|
cookie_policy |
string |
Os domínios em que os cookies de login serão criados. Um URI,
single_host_origin ou none . Se não for especificado, o padrão será single_host_origin .
|
hosted_domain |
string |
O domínio do G Suite a que os usuários precisam pertencer para fazer login. Isso é suscetível a modificações feitas por clientes. Portanto, verifique a propriedade do domínio hospedado do usuário retornado. |
login_hint |
string |
O e-mail ou ID de um usuário para pré-selecionar no fluxo de login. Isso é suscetível à modificação do usuário, a menos que a propriedade prompt: "none" seja usada.
|
include_granted_scopes |
boolean |
Define se é necessário solicitar um token de acesso que inclua todos os escopos concedidos anteriormente pelo usuário
ao app ou apenas os escopos solicitados na chamada atual. O valor padrão é true .
|
plugin_name |
string |
Opcional. Se definido, os IDs de cliente criados antes de 29 de julho de 2022 podem usar a
Biblioteca da Plataforma Google. Por padrão, os IDs de cliente recém-criados são bloqueados
e não podem usar a biblioteca da plataforma. Em vez disso, eles precisam usar a biblioteca mais recente do Google
Identity Services. É possível escolher qualquer valor. Um nome descritivo,
como o nome do produto ou do plug-in, é recomendado para facilitar a identificação.
Exemplo: plugin_name: 'YOUR_STRING_HERE'
|
gapi.auth2.AuthorizeResponse
A resposta retornada ao callback do
método gapi.auth2.authorize
.
Propriedades | ||
---|---|---|
access_token |
string |
O token de acesso concedido. Só estará presente se permission ou token forem
especificados em response_type .
|
id_token |
string |
O token de ID foi concedido. Presente apenas se id_token tiver sido especificado no
response_type .
|
code |
string |
O código de autorização concedido. Presente apenas se code tiver sido especificado no
response_type .
|
scope |
string |
Os escopos concedidos no token de acesso. Presente somente se permission ou token forem especificados no response_type .
|
expires_in |
number |
O número de segundos até o token de acesso expirar. Presente somente se permission ou token forem especificados no response_type .
|
first_issued_at |
number |
É o carimbo de data/hora em que o usuário concedeu os escopos solicitados pela primeira vez. Presente apenas se
permission ou token tiver sido especificado no response_type .
|
expires_at |
number |
O carimbo de data/hora em que o token de acesso expira. Presente somente se permission ou token forem especificados no response_type .
|
error |
string |
Quando a solicitação falha, ela contém o código do erro. |
error_subtype |
string |
Quando a solicitação falha, ela pode conter informações adicionais para o código de erro também retornado. |